因一段代码的更改,没有考虑到一些极端用户,上线后发现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里面的代码尽量控制的少一点,逻辑简单一点。