记一次公司产品「负」优化

初来乍到新公司不久,啃了几天文档,也翻了一下部分代码,就发现公司现有产品有点问题,是什么问题呢?

这年头还是用 Apache + PHP 5.4 我就不说什么了,关键是所以静态资源不在网站根目录也就算了,竟然没有配置别名什么的,然后把所有请求重定向到 index.php ,然后 index.php 去代理读取实际的静态文件路径,并发送给浏览器。

看我这个当时的我就

gQKPGddNmQ.jpg!large

什么鬼嘛,静态资源都不直接走 Apache ,反而要经过 PHP 二次处理,当 Apache 是病猫吗!

搞事

按我这暴脾气,受不了,要研究一下怎么搞了嘛。很快我就想到了几种方案

记一次公司产品「负」优化

方案一:用软链接挂载实际目录到网站跟目录

然后我就挑了登录页来测试,挑了一大一小两个文件来对比。连续请求 10 次然后取个平均值, 2.3 KB 的 login.html 速度约提升 50%,1.7 MB 的 bg.png 约提升 25%。

记一次公司产品「负」优化

方案二:使用别名

很快,就用 netstat 和 ps 找到了 Apache 使用的配置文件,配置了 AliasMatch ,然后打算重启一下 systemctl restart httpd 无服务,好吧,自定义安装的,没有就算了, 用 /.../apache/bin/apachectl graceful 吧,报 line 80 xxx/httpd 路径不对,怎么可以这么坑我的呢!打开 apachectl 一看,这破目录确实不对,/.../apache/bin/httpd graceful 然后输出一句 ServerName 有个错误,虽然好久不用 Apache ,怎么可以这么坑我呢,迷迷糊糊又弄了一会,发现这个错误并不影响重启,此时已经下午了。

别我为什么不用 Alias ...

再测一下

连续请求 10 次然后取个平均值, 2.3 KB 的 login.html 速度约提升 52%,1.7 MB 的 bg.png 约提升 28%。卧槽好像有点不科学。

记一次公司产品「负」优化

方案三:使用 Nginx 直接处理

2.3 KB 的 login.html 速度约提升 60%,1.7 MB 的 bg.png 约提升 35%,速度杠杠的

记一次公司产品「负」优化

前面两种对项目影响比较低,改架构影响就挺大的了,改是不可能改的。

碰巧

项目经理小X找我了解一下对项目熟悉情况,balabala… 然后问我有什么问题没,我说,为什么竟然资源要经过 index.php 二次处理,他说不清楚,这个遗留问题了。我就提了一下我这边的发现和解决方案,然后叫我整理一下发给他看一下发给他。过了一会他叫我跟他过去一下架构师那边,当时我就感觉。。。

记一次公司产品「负」优化

然而架构师看了说:还行,听说 nginx 处理静态资源确实比 Apache 好一些,但是要修改影响较大,之前也找实习生 去调查一下,他说两个差不多,当时就没管那么多了(内心:这个实习生可靠?)。只不过呀这个是对单个资源统计,不太能体现对整个页面提升了多少,要整个页面提升才有意义呀,能不能统计一下对整个页面加载的影响?

我:好的,回去我再测试一下。

记一次公司产品「负」优化

继续

由于之前优化过,我就先测一下优化后的首页吧,刷新查看 Network 的 Load:1.79s,2.01s,2.12s… 十次平均在2s,感觉还行吧。

此时他们在群了讨论吃粤菜还是烧烤,导师费什么的 200 一个新人,卧槽,还有缴费 200 一人?5 个新人就 1000 ,管不了那么多了,取消优化继续测一下吧。

取消了所有优化,重启 Apache 刷新。Load:1.55s。不对啊,这可能是偶然事件

记一次公司产品「负」优化

再刷新,Load:1.76s

记一次公司产品「负」优化

我不信,再来 Load:1.60s

记一次公司产品「负」优化

不科学啊,重启浏览器在来,刷了二十来次,尼玛,平均 Load:1.5s,优化后是 -25%???难不成我还搞成负优化了?这让我怎么交代?

记一次公司产品「负」优化

还有一分钟就6点了,简直要哭了。算了,要不吃个饭回来再看吧,说不定 chrome 就开窍了呢

刚到二楼食堂,心情不是很好,看看菜也没什么胃口的,随便吃点吧,点菜,付钱,刚刚端到餐桌坐下,一个电话过来,

小X:你在哪里?

我:在食堂

小X:今晚聚餐呀,快回来,我们在 5 楼等你

我:。。。好的

内心:我 TM 这 5 块钱的快餐怎么办?还没开吃呢!先吃两口吧,傻了吧,吃饱了怎么吃 1000 块的大餐!

然后我就端到了餐具回收处,刚才打菜的阿姨眼睁睁看我:这孩子傻了吧,刚打的菜还没吃就扔了。对不起了,我也想过打包啊,可是打包也没人吃。

刚爬楼梯到 4 楼,电话又响起

我:喂?

小X:额,那个我们下一楼了,在一楼等你吧,你也下来一楼吧

我:好的

内心一万一个草泥马奔腾而过啊

再次走楼梯下去。。。

记一次公司产品「负」优化

最后

怎么说 PHP 二次处理不可能比 Apache 直接读静态资源的快啊,优化后是 -25% ???严重怀疑浏览器有问题!

记一次公司产品「负」优化

本帖由系统于 1个月前 自动加精
ivothgle
讨论数量: 16
Nick

不敲代码的架构师吧?让实习生去调查?

2个月前 评论
ivothgle

@Nick 嘴皮架构师,哈哈哈

2个月前 评论
licxisky

想知道后续。。。哈哈。。。
不过我遇到过一个问题,一个黑名单,之前就是读整个文件然后查找字符串,然后以为我可以进行一番骚操作。。。格式化,预加载啥的。。。然后发现 20w 以内的,字符串查找居然是最快的。。。

2个月前 评论
p270228163 1个月前

很好玩的文章风格~~赞👍

2个月前 评论

就觉得你写的很有趣,值得一个赞

2个月前 评论
likunyan

写得很刺激,跟吃鸡一样。

2个月前 评论

从以上内容总结出两条:

  1. 楼主适合写作😂配图和文字中流露出一种不可言喻的闷骚
  2. 公司不靠谱

另外,给出一点排查思路:

  1. 对于单个请求速度快,但整个页面的加载速度变慢,建议你先去看一下是哪个请求变慢导致拖慢了整个页面的加载速度,从而把问题范围缩小。
  2. 对于 Nginx + PHP-FPM 来说,可能还需要看一看 FastCGI 配置是否需要优化,FPM 的进程数量是否设置合理。

最后,加入我司吧:

https://join.rightcapital.com/

😂

2个月前 评论
qingfengmengge

很幽默,赞

2个月前 评论
晓鹤

幽默的老哥~问题原因找到了么,哈哈~

2个月前 评论
ivothgle

@licxisky @yuesir 哈哈,近期有半个多月的计划,暂时就顾不上了,后续有机会再补上

2个月前 评论
p270228163 1个月前
ivothgle

@Wi1dcard 其实我就随便唠叨一下,论写作还向你多学习呢 :smiley:

再多的表情包也无法完全表达我内心活动

当前这公司技术确实不咋滴,但是其它福利还行吧

非常感谢你的建议,后面有时间再慢慢看,现在已经排满需求了,这就是一下公司所谓得进度要紧吧~

再次感谢你的橄榄枝,笔芯

2个月前 评论

我想知道你的图都哪里找的

2个月前 评论
p270228163 1个月前
gzxy 4周前
D-Kiss

文章风格略显风骚,历史遗留比较严重 :joy:

1个月前 评论
linxb

写代码真是浪费了,建议你去写书。

3周前 评论

请勿发布不友善或者负能量的内容。与人为善,比聪明更重要!