因一段代码的更改,没有考虑到一些极端用户,上线后发现cpu异常波动,
造成线上不少机器cpu报警。
没有对数据进行完整的评估
数据只是取了各个用户的平均值,但是有一些极端用户,他的数据可能与 100w个一般用户的数据之和相等。
当这些用户上线的时候,会造成cpu异常。
测试的不全面
qa在测试的时候,只关注了功能,没有做性能的测试,
想当然,这个模块是没有性能问题的,所以就不作性能测试了.
php在数据计算方面与c或者编译型语言存在一定的距离
同样排序 1w条数据,做内存排序,c和php的性能不是同一个等级的,这个已经做个对比。
现在重新调整了相关代码,有些教训肯定会有些总结。
1、任何数据都得考虑一个极限,考虑一般用户与特殊用户。
2、任何与数据有关的,都要进行性能测试。
3、一些复杂的计算,可以用php的扩展来做,或者用c/c++来处理。
4、php在做一些while/for/foreach的时候,非常的耗cpu,所以这些操作要尽可能的少,如果有,也要控制在一个合理的范畴之内,
如果上百次或者上千次的while/for/foreach,一定要测试其性能,每一个loop是非包含复杂的逻辑,是非调用了一些系统函数,如strval, empty,isset之类的,
能减少一个,性能会有明显的提升,所以loop里面的代码尽量控制的少一点,逻辑简单一点。

本文探讨了在数据处理过程中忽视极端用户导致的CPU异常波动问题,并强调了性能测试对于确保系统稳定运行不可或缺的作用。文章提出了针对数据计算的优化策略,包括考虑数据极限情况、进行全面性能测试、使用更高效的语言或扩展进行复杂计算,以及减少循环操作中的逻辑复杂性和调用系统函数,以提升整体性能。
467

被折叠的 条评论
为什么被折叠?



