Month April 2021

一次WordPress未关闭评论导致的sendmail产生大量日志清理过程

有个站群服务器,Ubuntu 20.04,使用的HDD硬盘,最近一直磁盘IO跑满,原因未知,于是一点点排查,发现这么个问题。 正常站点建立后同步安装Disable comments插件用于关闭全站评论,在面板的网站统计中发现部分站点的UV/PV很低,但网站总请求非常高。 进一步发现这部分站点的Disable comments插件处于未启用的状态,基本每个站点都有不低于20万的待审核评论,怀疑是通过Wordpress的xml-rpc 或者 rest api形式提交的批量评论。 于是先启用Disable comments插件,并在插件里关闭 xml-rpc和rest api并清理了所有垃圾评论,这个功能要更新到2.0以后才有。 以为这样子就结束,但是并没有,因为Wordpress默认是有邮件通知的!!! 在清理服务器垃圾文件时,发现 /var/spool/mqueue-client 目录下发现几百万条日志文件,看起来应该是和sendmail相关,文件内容都是如图: 可以看出是Wordpress的新评论邮件通知,也不清楚能不能直接删除目录,于是切换到这个目录后,使用 ls搭配xargs删除文件 同时,/var/spool/mqueue 目录下也有部分文件一并清理。 顺便把 sendmail也删除了,反正也用不上。 但是这并没有解决我的磁盘高IO的问题,使用 iotop -oP 查看发现有个 jbd2/sda4-8 进程长期99%的IO,找了一圈也没有解决办法,这可如何是好,换SSD吗? 更新:2小时测试下来,IO下降很多,但top查看 wa值还是经常偏高。

Read More一次WordPress未关闭评论导致的sendmail产生大量日志清理过程

高流量站点NGINX与PHP-fpm配置优化(译)

原文:Optimizing NGINX and PHP-fpm for high traffic sites 译者:youngsterxyf 使用Nginx搭配PHP已有7年的这份经历让我们学会如何为高流量站点优化NGINX和PHP-fpm配置。 以下正是这方面的一些提示和建议: 1. 将TCP切换为UNIX域套接字 UNIX域套接字相比TCP套接字在loopback接口上能提供更好的性能(更少的数据拷贝和上下文切换)。 但有一点需要牢记:仅运行在同一台服务器上的程序可以访问UNIX域套接字(显然没有网络支持)。 2. 调整工作进程数 现代计算机硬件是多处理器的,NGINX可以利用多物理或虚拟处理器。 多数情况下,你的Web服务器都不会配置为处理多种任务(比如作为Web服务器提供服务的同时也是一个打印服务器),你可以配置NGINX使用所有可用的处理器,NGINX工作进程并不是多线程的。 运行以下命令可以获知你的机器有多少个处理器: Linux上 – FreeBSD上 – 将nginx.conf文件中work_processes的值设置为机器的处理器核数。 同时,增大worker_connections(每个处理器核心可以处理多少个连接)的值,以及将”multi_accept”设置为ON,如果你使用的是Linux,则也使用”epoll”: 3. 设置upstream负载均衡 以我们的经验来看,同一台机器上多个upstream后端相比单个upstream后端能够带来更高的吞吐量。 例如,如果你想支持最大1000个PHP-fpm子进程(children),可以将该数字平均分配到两个upstream后端,各自处理500个PHP-fpm子进程: 以下是两个来自php-fpm.conf的进程池: 4. 禁用访问日志文件 这一点影响较大,因为高流量站点上的日志文件涉及大量必须在所有线程之间同步的IO操作。 若你不能关闭访问日志文件,至少应该使用缓冲: 5. 启用GZip 6. 缓存被频繁访问的文件相关的信息 7. 调整客户端超时时间 8. 调整输出缓冲区大小 9. � 10. 监控 持续监控打开连接的数目,空闲内存以及等待状态线程的数目。 设置警报在超出阈值时通知你。你可以自己构建这些警报,或者使用类似ServerDensity的东西。 确认安装了NGINX的stub_status模块。该模块默认并不会编译进NGINX,所以可能你需要重新编译NGINX – 原文:

Read More高流量站点NGINX与PHP-fpm配置优化(译)