use*_*891 6 server mysql apache2
每隔几天,大约有 100 个站点就会使 VPS 崩溃。Apache 连接达到数百个,而 mysql 请求达到数百万个。这会导致 CPU 永久处于 100% 以上,并使服务器完全无法使用。重新启动可修复几天的情况。怎么找到坏人?
我已经打开了扩展状态的上帝 mod_status 但它仍然只显示最近的几个请求。不知道如何使用它来缩小 100 个站点的范围。
其余时间服务器使用 20-30% 的资源,因此它不会因站点过载。
我对您的服务器配置了解不多,但我会尽力提供帮助。
首次启动iptables并不允许攻击您的服务器
iptables -A INPUT -p tcp --dport 80 -m limit --limit 25/minute --limit-burst 100 -j ACCEPT
Run Code Online (Sandbox Code Playgroud)
之后我认为这logrotate可以帮助我们找到影响力最大的网站。
安装logrotate
sudo apt-get install logrotate
Run Code Online (Sandbox Code Playgroud)
要验证 logrotate 是否已成功安装,请在命令提示符中运行此命令。
logrotate
Run Code Online (Sandbox Code Playgroud)
该实用程序的配置和默认选项logrotate位于:
/etc/logrotate.conf
Run Code Online (Sandbox Code Playgroud)
一些重要的配置设置是:旋转间隔、日志文件大小、旋转计数和压缩。
应用程序特定的日志文件信息(以覆盖默认值)保存在:
/etc/logrotate.d/
Run Code Online (Sandbox Code Playgroud)
我的想法是监控http访问文件。访问次数较多的站点必须有较大的访问日志。Logrotate并将cron关注我们并向您发送有关问题的邮件...
编辑logrotate.conf并添加一些代码
sudo nano /etc/logrotate.conf
/path_to_apache_logs/*.log {
size 1M
dateext
postrotate
/usr/bin/killall -HUP httpd
ls -ltr /path_to_apache_logs/ | mail -s "$HOSTNAME: Apache restarted and log files rotated" name@domain.com
endscript
}
Run Code Online (Sandbox Code Playgroud)
您必须定制
size- 日志文件的大小,根据您的需要更改
path_to_apache_logs- 根据日志路径更改路径vhost.conf
有关定制的更多信息,您可以在这里logrotate.conf找到
设置为每 5 分钟cron运行一次logrotate
*/5 * * * * root /usr/sbin/logrotate /etc/logrotate.conf
Run Code Online (Sandbox Code Playgroud)
当您处于“攻击”状态时,您的访问日志会快速增长。Cron将运行logrotate检查日志文件大小,如果文件大小为 XX,将轮换日志,重新启动 atache 并向您发送邮件。
因为每个虚拟主机都有自己的访问文件,所以你会知道女巫网站是服务器“杀手”
| 归档时间: |
|
| 查看次数: |
379 次 |
| 最近记录: |