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