问答 / 1 / 9 / 创建于 3年前 / 更新于 3年前
做为公司的一枚螺丝钉,日常就是写一些业务代码,服务器相关的配置,是公司运维人员去设计处理,项目的框架也是一开始就定好的,并且很多年的项目,很多业务逻辑,虽然代码存在很多问题,但是积重难返,也没办法也没时间一下子重构。
我们项目成员每天就是写一些业务类代码,感觉自己日常能做的就是在SQL查询优化,接受前端参数安全过滤,代码简洁一些,适当使用缓存等方面做一些优化。其他还能做什么来防止项目因为高并发而导致接口挂掉等问题吗?
1.如果是想要防止接口挂掉,就做限流2.如果要提升接口的qps的话,就提高接口性能,从接口整条链路去做优化
你这样说的就很大了 比如可以msql可以有些数据变成es查询 同步处理的东西用mq处理变成异步 fpm框架更换swoole hyperf 换成协程框架 mysql更换读写分离 多住多从 , 如果可以改为微服务再次提高 不过php微服务太少
查询类的接口可以单独用webman做,数据还可以从缓存中取
如果一定在代码层面提高性能,我想到的是降低时间,空间复杂度。比如我曾经把一个功能的时间复杂度从O(N^M)搞到了O(N*M)。
代码层面的优化,个人倾向于在易读、易理解、易拓展上做文章。
老项目改造我做得不少,看回复你们旧项目用的是CI,这东西应该很旧了。 但大体的php老应用优化思路应该接近。 如果想从代码层提高性能,可以尝试:
对于旧项目,除非十分十分有把握(你是老板并且不缺钱、老板亏钱你能哄等等),要不千万别整个重构。旧项目的重构风险必然大于收益的,技术人员不应该自己去决定这种技术成本的决策工作。 最后,任何swoole系的项目,都不可能保证你顺利将fpm引用迁移到swoole/swow生态。workerman/webman稍微好点,但一样没有fpm稳定。别搞。
我要举报该,理由是:
1.如果是想要防止接口挂掉,就做限流
2.如果要提升接口的qps的话,就提高接口性能,从接口整条链路去做优化
你这样说的就很大了 比如可以msql可以有些数据变成es查询 同步处理的东西用mq处理变成异步 fpm框架更换swoole hyperf 换成协程框架 mysql更换读写分离 多住多从 , 如果可以改为微服务再次提高 不过php微服务太少
查询类的接口可以单独用webman做,数据还可以从缓存中取
如果一定在代码层面提高性能,我想到的是降低时间,空间复杂度。比如我曾经把一个功能的时间复杂度从O(N^M)搞到了O(N*M)。
代码层面的优化,个人倾向于在易读、易理解、易拓展上做文章。
老项目改造我做得不少,看回复你们旧项目用的是CI,这东西应该很旧了。 但大体的php老应用优化思路应该接近。 如果想从代码层提高性能,可以尝试:
对于旧项目,除非十分十分有把握(你是老板并且不缺钱、老板亏钱你能哄等等),要不千万别整个重构。旧项目的重构风险必然大于收益的,技术人员不应该自己去决定这种技术成本的决策工作。 最后,任何swoole系的项目,都不可能保证你顺利将fpm引用迁移到swoole/swow生态。workerman/webman稍微好点,但一样没有fpm稳定。别搞。