十一假期结束以后,发现本身的博客不时出现数据库链接失败,经检查是mysql中止运行了。以前出现过这样的状况,可是没有那么频繁,因而就写了一个检查mysql进程的脚本,若是mysql进程中止了,就自动启动mysql进程。可是此次的问题是,mysql刚一重启,没过多久就又挂了。php
因为以前问题没这么严重,而十一期间有没有对博客作什么修改。我一度认为是阿里云的问题,不稳定或者逼低配置用户升级(个人阿里云是最低配置512M内存)。查看mysql的日志,里边报有pthread_create returned 11,在网上查了解决方案,修改了ulimit -s,ulimit -u却没有任何做用。后来查看内存(free -m),只剩下可怜的三、4MB,因为是只有一个博客,实在不想去升级服务器。因而又按照网上的办法关闭了mysql的innodb引擎,依然无济于事。使用top命令查看,发现有不少个php-fpm进程,而且占据了大量内存。我尝试将php-fpm重启,发现很快又产生大量php-fpm进程,内存迅速被耗尽。尝试修改了php-fpm的配置,依然没有做用。mysql
当我查看了nginx的访问日志以后,才真正找到问题所在,有一个IP不停地刷项目根目录下的xmlrpc.php文件,因此php-fpm的进程就会一直满负荷运行,将系统资源耗尽。nginx
根据关键字xmlrpc.php百度了一下,原来这是攻击wordpress博客的一种常见方式,网上有三种解决方案,第一种是屏蔽 XML-RPC (pingback) 的功能,add_filter('xmlrpc_enabled', '__return_false');第二种方法就是经过.htaccess屏蔽xmlrpc.php文件的访问;第三种一样的是修改.htaccess文件,若是有用户访问xmlrpc.php文件,让其跳转到其余不存在的页面,下降自身网站的负担。sql
因为个人网站用不到xmlrpc的功能,因此我就简单暴力的把这个文件改了个名字,这样一来非法的访问就直接被nginx阻止了,问题获得解决,内存的占用一下就下来了。数据库
除非注明,文章均为( 江上轻烟 )原创,转载请保留连接: http://www.zhizhi123.com/?p=308服务器