原创文章,转载请指明出处并保留原文url地址
前几天发现了wordpress网站变慢问题, 后来经过分析发现是php问题造成相关问题,详情参见 解决nginx下wordpress系统变慢问题一例
原计划考虑编写脚本来自动重新启动php程序,由于时间关系没有实际进行。但是最近几天发现网站速度又变慢了,这次有了上次的经验,因此特定用httpwatch记录了各种数据, 这样可以方便说明问题, 配合前面内容可以了解问题的基本解决过程。
一. httpwatch分析访问时间缓慢情况
如下图,打开ie浏览器,启动浏览器中httpwatch插件, 然后,点击record按钮,打开httpwatch的记录功能, 最后在地址栏中输入网站地址http://www.iigrowing.cn,相关记录如下:
从上图中,
蓝色区域1中我们可以看到访问中相关http请求的时间占用情况,
绿色区域2 我们可以特别注意到访问网站首页占用时间比较长,大大超过其他时间,因此这个情况下,解决这次访问时间是重点。从前面一个文章的分析中也已经证明这个问题了。
紫色区域3 是本次访问的总时间
为了更准确验证相关问题,我们可以通过httpwatch清楚本地浏览器缓存等各种数据,再次请求服务器进行相关数据的统计等。
最后显示结果如下:
如上图,本次访问时间变成了, 首页访问时间还是最长的。
按照时间方式排列访问时间, 如下图, 点击紫色区域的time标题, 然后显示如下排列方式。
绿色区域显示访问时间的倒序排列, 访问时间长的排列最前面, 访问时间短的在下面。
蓝色区域用图形化方法表示出访问时间的大小等。
通过本次访问时间的显示我们基本断定必须解决首次php访问的时间了。
二. 编写脚本自动重新启动php程序
1. 切换帐号
输入 su – 命令, 然后输入 root帐号的密码
2. 编写启动脚本
输入 vi job.restart.php.fpm.sh
然后输入如下脚本:
#!/bin/bash
# 程序启动后将进入 循环状态,直到被退出为止,每次先关闭全部php相关进程, 然后重新启动php进程, 然后sleep 24小时后重新执行这个过程
# 本程序需要采用root帐号启动才有效
# 本程序在运行时需要采用如下方式启动:nohup ./job.restart.php.fpm.sh >/dev/null 2>&1 &
ps -ef | grep “job.restart.php.fpm” | grep -v grep
#检测脚本是否已经被启动了,若是启动了,则提示后退出
myselfpid=`ps -ef | grep “job.restart.php.fpm” | grep -v grep | wc -l`
echo ${myselfpid}
if [ ${myselfpid} -gt 2 ];then
echo “你已经启动了一个相同任务,当前操作将直接退出”
exit 1
fi
echo “你已经启动了一个定时执行的任务”
#若没有启动过,则进入无限的循环中,每次循环会sleep 24 小时
while [ 1 -le 100 ]; do
echo “关闭全部php进程”
killall php-fpm
echo “启动php进程”
/usr/sbin/php-fpm
echo “间隔24小时后重新启动一次功能”
sleep 86400
done
3. 更改启动权限
chmod a+x ./*.sh
4. 启动脚本
输入如下命令
nohup ./job.restart.php.fpm.sh >/dev/null 2>&1 &
三. 再次测试网站访问速度
首先通过httpwatch清理本地ie的浏览器缓存等设施, 然后清理访问记录, 最后再次打开网站,记录相关数据如下
问题已经初步解决, 但是后续优化问题还有,我们将继续进行并持续优化中