pyc文件生成错误(2019-01)

线上突然出问题,访问全部报错。

定位过程:

1.看日志很奇怪,全部是import error,但是包全部安装了。

2.看监控及机器异常,看到文件句柄有突增


3.访问量突增,导致进程数变多,加载文件变多。然后看一下pyc文件,发现都非常小。生成的pyc文件有问题。

pyc.error是备份的错误文件。


原因:

编译器在读一个.py文件时,一旦遇到I/O异常,会得到一个EOF的标志,然后以它所读取的内容编译生成.pyc文件,但这个过程并没有检查I/O异常

。这个问题python3中做了修复,但是python2还是有可能有问题。I/O异常是因为突然访问量增加,瞬间启动了很多进程,虚拟机资源不够用。

参考https://bugs.python.org/issue25083

修复:

1.不生成pyc文件,sys.dont_write_bytecode = True;

测试了一下,内部系统这个速度基本没影响

2.限制住启动进程个数;之前没做限制,没想到被人扫了

3.限流,接入层做限流

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • error code(错误代码)=0是操作成功完成。error code(错误代码)=1是功能错误。error c...
    Heikki_阅读 3,462评论 1 9
  • ORA-00001: 违反唯一约束条件 (.) 错误说明:当在唯一索引所对应的列上键入重复值时,会触发此异常。 O...
    我想起个好名字阅读 5,484评论 0 9
  • feisky云计算、虚拟化与Linux技术笔记posts - 1014, comments - 298, trac...
    不排版阅读 3,941评论 0 5
  • 一、温故而知新 1. 内存不够怎么办 内存简单分配策略的问题地址空间不隔离内存使用效率低程序运行的地址不确定 关于...
    SeanCST阅读 7,900评论 0 27
  • 写在前面的话 代码中的# > 表示的是输出结果 输入 使用input()函数 用法 注意input函数输出的均是字...
    FlyingLittlePG阅读 3,015评论 0 9