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.
mabbs/_posts/2020-01-21-devops.md

31 lines
5.1 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

---
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。