幸福来得太快!CentOS/Ubuntu/Debian的速度优化指南(日志篇)

王志勇 发表于 2018年11月13日 11:02

前言:本文部分内容为暴(隔开)力优化系统,可能引起读者不适,请勿模仿。

大家的VPS普遍较快,并不是已经优化的原因,而是因为服务器的性能本身很高,即使没有优化,对速度的影响也较小。但如果再优化一下,是不是能让服务器发挥更好的性能?
请大家查看一下/var/log/btmp文件,是不是已经达到几十M,上百M了?这个文件很容易快速增长,是服务器性能的杀手,首先可以把这个文件删除。默认的这个系统错误文件,是开启的,网上也找不到彻底关闭它的办法。办法一定是有的,只是找到办法需要一定的时间。

在十多年前,大部分人都使用Windows服务器;如今由于Linux系统开源免费,成本大幅度降低,所以绝大部分人的博客、网站都使用Linux系统的服务器。Linux系统,又分为CentOS、Ubuntu、Debian等系统。其中,Ubuntu和Debian的命令、软件环境都一模一样,多数情况可以认为是同一个系统。除此之外,还有别的现行Linux系统,很多都分别与CentOS、Ubuntu的命令、软件环境一样。

因此,只要以CentOS、Ubuntu为例,其它系统都完全同理,比如Debian系统完全能用本文里介绍的Ubuntu的方法。最简单的区别的办法,如果安装软件、或update的命令是以yum开头,则与CentOS系统相似;如果是以apt-get开头,则与Ubuntu系统相似。

CentOS和Ubuntu系统,关闭/var/log/btmp文件的方法不同。CentOS的方法很简单,Ubuntu用相同的方法不起作用,只能用“暴(隔开)力”的方法。

CentOS或类CentOS系统:

CentOS 6运行这个命令即可关闭btmp文件:
killall -9 rsyslogd

CentOS 5运行这个命令即可关闭btmp文件:
killall -9 syslogd

说明:CentOS 7没来得及测试,理论上应该和CentOS 6一样。这个命令,每次重启后会失效,需要再运行一次。为防止忘记,或者服务器因某种原因被迫重启,可以把这个命令写在开机自启文件里。以前我测试过几个工作日,直接写,依然不生效。解决办法是使用sleep延时语句,让它开机3分钟后再运行此命令,在CentOS下能生效。
但sleep进程,不会自动清除,所以需要再加个killall -9语句来杀掉sleep进程。
这个sleep语句,如果直接写sleep 180,依然不生效。之后我改成了sleep 60; sleep 120;,大部分时间都是生效的。

步骤:修改CentOS的/etc/rc.local文件。如果有exit 0这个语句,这一行必须删除。

CentOS 6或7加入这一行:
sleep 60; sleep 120; killall -9 rsyslogd; killall -9 sleep;

CentOS 5加入这一行:
sleep 60; sleep 120; killall -9 syslogd; killall -9 sleep;

Ubuntu或类Ubuntu系统:

理论上使用和CentOS一样的方法,也能生效,但是实际完全不起作用,因为结束rsyslogd进程后,马上自动产生一个新的rsyslogd进程。只能用“暴(隔开)力”方法,这个暴(隔开)力,是对系统的文件进行修改,可能会产生致命错误,经过测试,网站目前运转良好,本文以Ubuntu 14为例。

尝试步骤1:
/usr/sbin/rsyslogd 将rsyslogd这个文件改名。

重启VPS,命令:
reboot

之后发现,虽然rsyslogd进程自动永久消失了,但/var/log/btmp文件仍然在继续增大,说明Ubuntu系统即使没有了rsyslogd进程,此文件仍然在增大。而CentOS系统,经过我这2年多的测试,只要没有rsyslogd、syslogd进程,这个文件是不会增加的。

尝试步骤2:
最后,干脆把/var/log目录改名,改为/var/log2,重启VPS,整个世界都安静了,网站也运行良好,没有出现致命错误。

Apache、Nginx、PHP的重要日志优化
默认的日志文件全部是开启的,而且很快变会得很巨大,是服务器性能的杀手。这些文件,包括访问日志、错误日志。如果没有特殊必要,建议将这些日志文件全部关闭。除非用于网站错误调试期,调试完尽快关闭。

这部分以后我会逐渐写一个完整的指南,由于时间的关系,这里简要说明一下。首先打开/var/log目录,Apache、Nginx在CentOS、Ubuntu下的路径有所不同,但是同理,比如这样的目录:
/var/log/httpd
/var/log/apache2
/var/log/nginx
/var/log/php-fpm

主要就是在这4种目录里。请打开这些目录,都是日志文件,是不是有的文件很巨大呢?其中,文件名带有“error”,为错误日志;带有“access”,为访问日志。打开这些错误文件,会发现里面有大量的无关语句,比如蜘蛛会访问网站上大量不存在的文件,这些都会写入错误日志里。

因为我使用Apache为主,所以Nginx的日志关闭方法暂时空缺,请大家搜索一下,时常监测这些日志文件、并清理。

Apache的错误日志的关闭方法,网上大多是将Apache的配置文件上的这一行删除、或加注释。但实际上不起作用,正确的方法是,CentOS+Apache、Ubuntu+Apache将此行改为:

ErrorLog Off

访问日志,只要将带有CustomLog logs/access_log的行删除,就能起作用,例如将这2行删除:
#CustomLog logs/access_log common
CustomLog logs/access_log combined

修改php.ini文件
CentOS/Ubuntu+Apache/Nginx的php.ini的路径都不同。列举几个路径:
/etc/php.ini (CentOS+Apache+PHP,或CentOS+Nginx+PHP)
/etc/php5/apache2/php.ini (Ubuntu+Apache+PHP)
/etc/php5/fpm/php.ini (Ubuntu+Nginx+PHP)

在php.ini里找到这一行:log_errors。默认值为On,改为:
log_errors=Off

重启Apache。

Ubuntu+Apache或类Ubuntu+Apache
Ubuntu+Apache,还多出了一个/var/log/apache2/other_vhosts_access.log的文件,这个文件会不断增大。解决的办法是:

/etc/apache2/conf-available/other-vhosts-access-log.conf 里的这一行:
CustomLog ${APACHE_LOG_DIR}/other_vhosts_access.log vhost_combined 将这一行删除,或者在这一行的最前面加#

重启Apache。

是不是有些复杂呢?一点不复杂。练习几次,并做关键的本机笔记,每次只要10分钟就搞定了。VPS,比虚拟主机好用太多了,因为虚拟主机是无法关闭这些日志的。

2018-11-13 12:19更新
为什么CentOS 6不用删除rsyslogd文件的办法?路径为/sbin/rsyslogd。
删除rsyslogd文件,只适用于Ubuntu、类Ubuntu系统。

CentOS删除了此文件,重启VPS后,网站会无法访问,今天测试了半个多小时,重启Apache也不行,所以CentOS系统的rsyslogd、syslogd文件不能删除,只能用结束进程的方式。

2018-11-13 17:49更新
为什么标题用“幸福来得太快”?因为差一点要彻底放弃用Ubuntu系统(我喜欢用能优化的系统),Ubuntu系统的rsyslogd进程用killall -9命令结束进程后,马上就会再跳出一个rsyslogd,从而无法阻止/var/log/btmp文件的增大。当时想着要解决这个问题起码得半年时间的调试,没想到不到半个小时就调试出了解决办法,解决了一个大难题。所以说,幸福来得太快!

6条评论:
1   自由勇 2018-11-13 11:03
是不是有些复杂呢?一点不复杂。练习几次,并做关键的本机笔记,每次只要10分钟就搞定了。VPS,比虚拟主机好用太多了,因为虚拟主机是无法关闭这些日志的。
2   自由勇 2018-11-13 11:24
Trackback来自《VPS的快速安装和PHP调试导航页

虽然这些文章正在增多,但实际上,VPS的安装、配置比我们想象中容易得多,新机通常在半小时内能完成整个安装、配置。

3   自由勇 2018-11-13 12:22
2018-11-13 12:19更新:
为什么CentOS 6不用删除rsyslogd文件的办法?路径为/sbin/rsyslogd。
删除rsyslogd文件,只适用于Ubuntu、类Ubuntu系统。

CentOS删除了此文件,重启VPS后,网站会无法访问,今天测试了半个多小时,重启Apache也不行,所以CentOS系统的rsyslogd、syslogd文件不能删除,只能用结束进程的方式。

4   自由勇 2018-11-13 17:51
2018-11-13 17:49更新:
为什么标题用“幸福来得太快”?因为差一点要彻底放弃用Ubuntu系统(我喜欢用能优化的系统),Ubuntu系统的rsyslogd进程用killall -9命令结束进程后,马上就会再跳出一个rsyslogd,从而无法阻止/var/log/btmp文件的增大。当时想着要解决这个问题起码得半年时间的调试,没想到不到半个小时就调试出了解决办法,解决了一个大难题。所以说,幸福来得太快!
5   夜阑静 2018-11-15 01:04
虽然没看懂,到能感觉到博主是个技术大咖。

自由勇 2018-11-15 06:24
谢谢鼓励:) 愧不敢当。
谢谢回访!

6   自由勇 2018-11-18 08:34
Trackback来自《VPS都已切换到Ubuntu系统/VPS面板开发的一点设想

这几天安装了几十次Ubuntu+Apache,已基本熟练。干脆把这些安装、配置、优化配置都写成一个一键的shell命令,例如前文的日志优化,已经写到一键shell命令里。

7   自由勇 2019-06-02 08:18
Trackback来自《虚拟主机和VPS的性能的一个重要区别

速度快,并不是因为配置有多好(现在用的是单核/256M内存/SSD),而是因为解决了CentOS/Ubuntu/Debian系统的一个重要瓶颈:彻底关闭了所有的日志,所以能一直保持新机的速度。Linux系统、Apache/Nginx、PHP的日志文件如果不关闭,特别是Linux系统的日志,很快会达到几兆、上百兆,所以速度越来越慢。

8   自由勇 2019-07-15 13:54
Trackback来自《如何从0速成为Linux VPS熟手?(揭开VPS的神秘面纱)

虚拟主机默认的服务器配置,Apache/Nginx错误日志、Apache访问日志、php.ini错误日志、系统错误日志,这4部分的日志全部是开启的,无法关闭,而VPS则可以通过一定的方法关闭所有的错误日志。

发表评论:
名字: (*必填)
博客: (可省)

正文:

  记住信息?

王志勇:1980-09-26 (44周岁)
程序设计,前端设计。

版权声明:本博客所有文章,均符合原创的定义,禁止转载,违者将必究;正确的方法是贴原文的标题和网址即可。

与此相关的链接
自由勇专栏

Blog存档 Archives

2022年07月
2022年06月(15)
2022年05月(20)
2022年04月(16)
2022年03月(9)
2022年02月(9)
2022年01月(10)
2021年 +

2020年 +
2019年 +
2018年 +
2016年-2017年(9)
2014年06月-09月(10)
2013年 +
2012年 +
2011年 +
2010年 +
2009年 +
2008年 +
2007年 +
2006年 +
2005年09月(4)

Copyright © 2006-2024 auiou.com All rights reserved.
此Blog程序由王志勇编写