如何在代码层面 提升项目的性能以及并发?

背景:

做为公司的一枚螺丝钉,日常就是写一些业务代码,
服务器相关的配置,是公司运维人员去设计处理,
项目的框架也是一开始就定好的,并且很多年的项目,很多业务逻辑,虽然代码存在很多问题,但是积重难返,也没办法也没时间一下子重构。

问题

我们项目成员每天就是写一些业务类代码,感觉自己日常能做的就是在SQL查询优化,接受前端参数安全过滤,代码简洁一些,适当使用缓存等方面做一些优化。其他还能做什么来防止项目因为高并发而导致接口挂掉等问题吗?

php
UKNOW
讨论数量: 9
Junwind

查询类的接口可以单独用webman做,数据还可以从缓存中取

1年前 评论
meystack 1年前
UKNOW (楼主) 1年前
UKNOW (楼主) 1年前

如果一定在代码层面提高性能,我想到的是降低时间,空间复杂度。比如我曾经把一个功能的时间复杂度从O(N^M)搞到了O(N*M)

代码层面的优化,个人倾向于在易读、易理解、易拓展上做文章。

1年前 评论

老项目改造我做得不少,看回复你们旧项目用的是CI,这东西应该很旧了。 但大体的php老应用优化思路应该接近。 如果想从代码层提高性能,可以尝试:

  1. 引入composer,减少代码量。这一步很简单同时收益很大。注意在 composer.json 中声明好你们的php版本等环境信息,防止引入一些太新版本的lib。
  2. 删除重复代码。具体可以使用phpcpd或者phpstorm inspect来检查,前期先删除重复代码,可以大量减少后续的优化工作。
  3. 搞清楚哪里慢。CI项目我不太了解要怎么处理,如果框架内没Hooks/事件订阅这种机制,应该要自己去魔改框架。可以尝试在框架、控制器、服务相关地方补充下打log逻辑,我建议用symfony/stopwatch。
  4. 知道哪里慢就好搞了。如果对于系统内一些地方不满意,可以适当在这里对部分进行重构。一般,php应用慢大概率都是数据库查询相关的问题。。。

对于旧项目,除非十分十分有把握(你是老板并且不缺钱、老板亏钱你能哄等等),要不千万别整个重构。旧项目的重构风险必然大于收益的,技术人员不应该自己去决定这种技术成本的决策工作。 最后,任何swoole系的项目,都不可能保证你顺利将fpm引用迁移到swoole/swow生态。workerman/webman稍微好点,但一样没有fpm稳定。别搞。

1年前 评论
UKNOW (楼主) 1年前
╰ゝSakura

1.如果是想要防止接口挂掉,就做限流
2.如果要提升接口的qps的话,就提高接口性能,从接口整条链路去做优化

1年前 评论

你这样说的就很大了 比如可以msql可以有些数据变成es查询 同步处理的东西用mq处理变成异步 fpm框架更换swoole hyperf 换成协程框架 mysql更换读写分离 多住多从 , 如果可以改为微服务再次提高 不过php微服务太少

1年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!