You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
---
|
|
|
|
|
layout: post
|
|
|
|
|
title: Mayx的运维笔记 - 应用优化
|
|
|
|
|
tags: [运维, 笔记, 优化]
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
优化?能不负优化就够好了!<!--more-->
|
|
|
|
|
|
|
|
|
|
# 继续优化!
|
|
|
|
|
接着[上一篇](/2020/01/05/devops.html)的重建,我在上一次做了一些系统环境上的优化,不过论坛中用的Discuz系统也算是一个成熟的应用了 ~~(可惜再成熟也不会自己写代码😂)~~ ,所以这次我打算在Discuz这个应用上做优化。
|
|
|
|
|
不过毕竟以我的PHP水平还做不到直接在源代码上进行修改,所以我打算使用Discuz本身有的优化功能上进行优化。
|
|
|
|
|
|
|
|
|
|
# 关于图片处理库的优化
|
|
|
|
|
在Discuz的后台面板中,我首先看到的关于性能优化方面的地方就是图片处理库 ~~(尽管它不是最先出现的)~~。看旁边的介绍中说默认的GD库似乎更加消耗系统资源,而相比之下ImageMagick库会好一些,既然它都这么说了,那我肯定是毫不犹豫的选择了ImageMagick库嘛。
|
|
|
|
|
当然,事实上我也确实是这么做的,然而这个操作貌似发生了一些不可预料的问题。修改了这个选项后我开始逛论坛,但是我发现论坛中不少帖子的图片缩略图显示出现了问题,这时候我感觉不大对劲,首先我确定了一下,Vultr中的LEMP肯定是有装ImageMagick库的,那问题肯定不是我PHP环境的问题,这时候我怀疑是数据库保存的东西可能有问题。不过这个问题就超出了我的解决范围,没办法,我只好又把选项还原回去了😓,反正它这么多年也都过来了,应该影响没多大吧。
|
|
|
|
|
|
|
|
|
|
# 关于缓存的优化
|
|
|
|
|
在之前的花火学园中,我也用了Discuz的缓存,引擎是MemCache。事实上在LEMP默认是不提供MemCache的扩展,反倒是有Redis的扩展。不过我看着Redis那红色的图标,不知道为什么心里总有一种抵触感,后来经过了解,Redis似乎要比MemCache的性能好的多,我也就半信半疑的打算装一下试试。
|
|
|
|
|
不过事实上我并不怎么相信这种缓存能提升多少性能,只是看着网上说着各种加速到0.005s让人非常的心动。毕竟我的服务器内存并不大,总共也就1个G,另外还加了Swap。如果缓存占用的内存很多,分配来分配去又回到Swap所在的硬盘,那我优化岂不是失去了意义?不过心里总是被别人的博客搞的很羡慕,所以我开始研究怎么样搞Redis缓存。
|
|
|
|
|
## 历经艰辛的Redis之旅
|
|
|
|
|
Redis并不是很难安装,一句`yum install redis`就搞定了,主要难的地方还是在于配置。
|
|
|
|
|
我知道,这时候只要在Discuz的配置文件里加一句`$_config['memory']['redis']['server'] = '127.0.0.1';`然后再以默认的方式启动Redis服务就OK了。但是既然之前我说过,在内部的服务中不应该使用TCP/IP sockets,那我肯定是不能允许它就用默认的配置工作。
|
|
|
|
|
在Redis中倒是有支持UNIX domain sockets的选项,也支持关闭监听TCP/IP Port。我按照它上面的说明配置了,然后信心满满的在配置文件中设定好了。然而现实告诉我没那么简单,我写了一个测试脚本,它返回了一个`No such file or directory`?我反复确认路径,保证自己没有手残到把路径写错,然后上网搜这个错误,查了半天也没有什么有建设性的结果……我甚至把权限都设置为777,把php-fpm加到了redis的组里,都没有任何用处,另外我也用redis-cli确定了那个文件确实是一个socket文件。这时候我实在是无计可施了,我打算放弃,就这样屈服于TCP/IP sockets,然而我的强迫症和其他博客里中说的10ms不允许我放弃!没办法,我只好仔细思考了。
|
|
|
|
|
我觉得这个问题应该还是在于权限,只是这个问题过于奇妙,让我无法理解。按照默认的配置,那个socket文件在/tmp/文件夹下,因为PHP在上传文件的时候也用到了这个文件夹,所以我也没怎么怀疑它。但是我的mysql同样也用了UNIX domain sockets,只是文件在/run/下,它也没出问题啊,我想了想,也许把这个socket文件放到/run/文件夹下就可以正常工作了。没想到还真是这个问题,随着我把配置文件中的路径修改了,它也能正常工作了……我真的是无言以对……
|
|
|
|
|
在这之后,我把redis服务设置成了开机自启动,然后这段优化就到此为止了。
|
|
|
|
|
|
|
|
|
|
# 其他的杂事
|
|
|
|
|
其他也没什么特别多可以优化的地方,后来我查了一下,发现花火学园的请求在那天出现问题的时候请求量突然涨了一倍,也许是这个原因把之前的花火学园逼停了,所以优化还是挺重要的嘛。
|
|
|
|
|
其他方面就是对于Discuz权限的一些调整,不知道为什么,总有些人要在试贴区水贴,真的是无法理解它们的操作,另外就是连发贴的问题,我感觉估计有人用发帖机搞我们的论坛,所以又提高一点发帖的门槛。
|
|
|
|
|
其实这次也没什么大的改动,就是这个Redis搞的我真是当场爆炸,看来我还是要提高一下我的姿势水平啊23333。
|