关于wordpress卡死问题
问题现象
经常关注我博客的朋友们,一定发现我的博客有很久没有更新了,那时每隔一段时间,打开博客时莫名其妙的会跳出如下提示:
pache HTTP Server停止工作
并且端口一直在变,从50000到60000之间一直在跳
网上说法
网上查了很多方法:
1.有的说是内存问题的,解决办法如:http://blog.csdn.net/hayley_liu/article/details/52116816
2.有的说端口问题的,说443或者80端口和现有端口冲突
3.有的说这个服务器已经被黑,成为肉鸡
最后一个说法很可怕,而且我最近一个月非常忙,没时间做处理。
检查方法
在没弄明白到底怎么回事之前,还是先关了服务为妙!!!
所以就是你们看到的,访问域名时,显示服务已经无法访问到服务器了。
今天终于得闲,分析了一下日志、服务器、内存、CPU、TCP连接,包括apache配置文件、PHP配置文件、Windows配置文件等等,终于找到原因了。
日志的现象就是,在无法访问时提示:服务器已经挂掉了,为啥挂掉了?这不等于没说吗!小强,你不要死啊!可是,光喊是没用的!
10:02:19 [Apache] Attempting to stop Apache (PID: 22152)
CPU、内存均正常,没用飙高现象。进程的CPU和内存也都很正常,可以排除内存问题!
网络问题?查了一下netstat,发现一个很奇怪的现象,就是网络端口一直被占用,TCP连接数持续飙高,可是我对服务器操作是很谨慎的,只开放了某几个端口的对内访问!这里是对外访问的,也就是说,我的wordpress对外一直在传消息,网络流量只出不进,端口也是一直在变化的,难道我的服务器真的成了肉鸡?
查了netstat发现的几个IP地址,美国的,本人与美国没有往来啊,只是以前有几个美国IP攻击我被我封禁了而已!难道他们没有放弃对我的攻击?(此处省略一万字,各种科幻迷可以脑补)
身为程序员的我并没有放弃治疗,虽然我擅长的语言不是php。
于是我发现了一个现象,我的服务访问的端口是50000到60000之间,而对方的IP访问端口是443/80,于是我大胆的用https访问了一下这个IP,https://66.155.40.189/
原来可以访问,上去看看是什么玩意!打开了高级,正想添加,心中不免涌出一万句骂人的话!大家自己看:
这尼玛是wordpress官网啊,谁让你访问的?谁让你占我带宽,浪费我流量的?谁让你耽误我正常网站访问的?
处理办法
骂归骂,人家也不容易,还是想想什么原因比较好!
于是想到网站经常会提示什么更新啊,虽然一直没有更新成功过,不过还是一直开着,而更新的网站都是国外的,经常更新会占了很多带宽和流量,并且影响网站正常访问速度。
还是关了吧!在主题的function中增加如下代码(方法是否好用还有待验证):
add_filter('automatic_updater_disabled', '__return_true'); // 彻底关闭自动更新
remove_action('init', 'wp_schedule_update_checks'); // 关闭更新检查定时作业
wp_clear_scheduled_hook('wp_version_check'); // 移除已有的版本检查定时作业
wp_clear_scheduled_hook('wp_update_plugins'); // 移除已有的插件更新定时作业
wp_clear_scheduled_hook('wp_update_themes'); // 移除已有的主题更新定时作业
wp_clear_scheduled_hook('wp_maybe_auto_update'); // 移除已有的自动更新定时作业
remove_action( 'admin_init', '_maybe_update_core' ); // 移除后台内核更新检查
remove_action( 'load-plugins.php', 'wp_update_plugins' ); // 移除后台插件更新检查
remove_action( 'load-update.php', 'wp_update_plugins' );
remove_action( 'load-update-core.php', 'wp_update_plugins' );
remove_action( 'admin_init', '_maybe_update_plugins' );
remove_action( 'load-themes.php', 'wp_update_themes' ); // 移除后台主题更新检查
remove_action( 'load-update.php', 'wp_update_themes' );
remove_action( 'load-update-core.php', 'wp_update_themes' );
remove_action( 'admin_init', '_maybe_update_themes' );
总结
1.遇事冷静思考,虽然没有php的经验,没有wordpress应用经验,不过还是要思考
2.不要盲目相信网上的结论和解决办法,自己看到的才是真的,特别对于这种外来的像wordpress这种
3.积极寻找途径和方法,网络虽不可信,但不要一上来就给自己扣一个肉鸡的帽子,这样除了换网站工具以外没有其他途径了
4.对于程序员,要相信自己的判断和能力,你一定能解决问题的!