@FrankHuy 在 最近开发遇到了个问题,看各位佬有没有好的优化方案 中发帖
最近用Claude Code搓代码,完全不是我自己写的,然后有个SSE的服务需要调用,CC自己搓了个事件循环在后台常驻,需要请求服务的时候就等一下异步结果。
本地调试没啥问题,结果上了服务器跑一段时间就炸了。
具体表现就是,因为GIL的存在,事件循环占据cpu时间太多了,导致单个请求中其他的有用代码跑的巨慢,因为拿不到cpu时间,我咋发现的呢?
本来让CC优化,找了半天原因,优化了几轮,其中包括依赖包升级、增加keep-alive、优化日志等等等等,效果可以说是一点用没有,最后只能我自己上了。
先用py-spy上了火焰图,一顿采样分析。
发现事件循环占用时间贼多。请求时间劣化到10s的时候,事件循环占了7s,但实际SSE返回结果不到1s也就结束了,后面剩余的代码也跑的挺快,1s顶天了。
于是让CC针对性优化事件循环这部分,结果给的方案是休眠或者手动控制事件循环balabala的...