我计划将它移动到一个专用的虚拟服务器(Ubuntu 12.04 LTS),理论上它应该改进并使它们更加一致,因为它不共享.然而,我观察到严重的性能降级,页面需要10秒才能生成.
我通过编辑服务器上的/ etc / hosts并将域映射到127.0.0.1来排除网络问题.我使用Apache负载测试器ab来获取HTML,因此JS,CSS和图像都被排除在外.它还需要10秒钟.
我在服务器上安装了Zpanel,它也使用了MySQL,它的页面出现得非常快(1.5s),还有PHPMyAdmin.直接通过PHPMyAdmin对wordpress数据库执行一些查询也会非常快速地返回它们,查询时间在10到30毫秒的范围内.
内存也足够了,只有800Mb可用于1Gb物理内存,所以它似乎也不是交换问题.我还安装了APC以尝试提高PHP性能,但它没有任何效果.
我还应该寻找什么?什么可能导致性能下降?可能是某种I / O问题,因为我在基于云的虚拟服务器上运行?
我希望能够向我的提供者提出问题,但没有显示某些诊断的实际数据,我担心他只会责怪我的申请.
当我发出HTTP请求时,使用sar输出(每秒)更新:
02:31:29 cpu %user %nice %system %iowait %steal %idle 02:31:30 all 0.00 0.00 0.00 0.00 0.00 100.00 02:31:31 all 2.22 0.00 2.22 0.00 0.00 95.56 02:31:32 all 41.67 0.00 6.25 0.00 2.08 50.00 02:31:33 all 86.36 0.00 13.64 0.00 0.00 0.00 02:31:34 all 75.00 0.00 25.00 0.00 0.00 0.00 02:31:35 all 93.18 0.00 6.82 0.00 0.00 0.00 02:31:36 all 90.70 0.00 9.30 0.00 0.00 0.00 02:31:37 all 71.05 0.00 0.00 0.00 0.00 28.95 02:31:38 all 14.89 0.00 10.64 0.00 2.13 72.34 02:31:39 all 2.56 0.00 0.00 0.00 0.00 97.44 02:31:40 all 0.00 0.00 0.00 0.00 0.00 100.00 02:31:41 all 0.00 0.00 0.00 0.00 0.00 100.00
更新2在josten的建议之后.
I / O:
iotop因OSError失败:Netlink错误:没有这样的文件或目录(2)和sar -d也失败,文件/ var / log / sysstat / sa14中没有可用的请求活动.我认为这是因为这是一个虚拟机,就像iostat也失败了.这可能是因为sar 1 10报告的%iowait总是0%的原因吗?
在htop中获得cpu%的过程实际上是apache2.我期待这可能是数据库,但事实并非如此.当我执行新的HTTP请求时,它会持续几秒钟达到94%.似乎这是罪魁祸首.
我做了一个strace -f -t和一个汇总strace -c -f.似乎有很多lstat调用(57786),其中2455导致错误.不知道这是否正常.
除此之外,最顶层的调用是wait4,我认为这是正常的(它只是在等待)和munmap.前5名.
% time seconds usecs/call calls errors syscall ------ ----------- ----------- --------- --------- ---------------- 51.06 0.124742 897 139 6 wait4 14.90 0.036388 1 57786 2455 lstat 9.67 0.023622 13 1857 munmap 7.69 0.018790 37 514 brk 6.70 0.016361 481 34 clone 2.87 0.006999 74 94 12 select
strace本身将apache的速度减慢了2倍.我现在试图了解长迹,看是否有任何迹象表明导致cpu飙升几秒钟的原因.
对于性能良好的服务器,lstat的典型时间是多少?我希望收集一些信息,这样如果存储访问错误,我可以以建设性的方式向提供者投诉.
random-read: (g=0): rw=randread,bs=4K-4K/4K-4K,ioengine=sync,iodepth=1 fio 1.59 Starting 1 process random-read: Laying out IO file(s) (1 file(s) / 128MB) Jobs: 1 (f=1): [r] [100.0% done] [12185K/0K /s] [2975 /0 iops] [eta 00m:00s] random-read: (groupid=0,jobs=1): err= 0: pid=24264 read : io=131072KB,bw=10298KB/s,iops=2574,runt= 12728msec clat (usec): min=119,max=162219,avg=380.34,stdev=957.37 lat (usec): min=119,avg=380.89,stdev=957.40 bw (KB/s) : min= 7200,max=13424,per=99.89%,avg=10285.72,stdev=1608.68 cpu : usr=2.80%,sys=18.65%,ctx=33511,majf=0,minf=23 IO depths : 1=100.0%,2=0.0%,4=0.0%,8=0.0%,16=0.0%,32=0.0%,>=64=0.0% submit : 0=0.0%,4=100.0%,64=0.0%,>=64=0.0% complete : 0=0.0%,>=64=0.0% issued r/w/d: total=32768/0/0,short=0/0/0 lat (usec): 250=45.57%,500=37.17%,750=3.41%,1000=7.83% lat (msec): 2=5.67%,4=0.27%,10=0.08%,20=0.01%,250=0.01% Run status group 0 (all jobs): READ: io=131072KB,aggrb=10297KB/s,minb=10545KB/s,maxb=10545KB/s,mint=12728msec,maxt=12728msec
我现在唯一的提示是,与其他系统相比,fio输出的cpu线似乎显示出相当多的活动.我在我的本地Ubuntu机器上运行它,输出是:
cpu : usr=0.19%,sys=0.59%,ctx=32923,minf=23
usr百分比似乎只是我服务器上报告的一小部分.
APC Support enabled Version 3.1.7 APC Debugging Disabled MMAP Support Enabled MMAP File Mask no value Locking type pthread mutex Locks Serialization Support PHP Revision $Revision: 307215 $ Build Date May 2 2011 19:00:42
我应该检查一下具体的设置吗?这些是我的设置(本地值,主值):
apc.cache_by_default On On apc.canonicalize On On apc.coredump_unmap Off Off apc.enable_cli Off Off apc.enabled On On apc.file_md5 Off Off apc.file_update_protection 2 2 apc.filters no value no value apc.gc_ttl 3600 3600 apc.include_once_override Off Off apc.lazy_classes Off Off apc.lazy_functions Off Off apc.max_file_size 1M 1M apc.mmap_file_mask no value no value apc.num_files_hint 1000 1000 apc.preload_path no value no value apc.report_autofilter Off Off apc.rfc1867 Off Off apc.rfc1867_freq 0 0 apc.rfc1867_name APC_UPLOAD_PROGRESS APC_UPLOAD_PROGRESS apc.rfc1867_prefix upload_ upload_ apc.rfc1867_ttl 3600 3600 apc.serializer default default apc.shm_segments 1 1 apc.shm_size 32M 32M apc.slam_defense On On apc.stat On On apc.stat_ctime Off Off apc.ttl 0 0 apc.use_request_time On On apc.user_entries_hint 4096 4096 apc.user_ttl 0 0 apc.write_lock On On
更新将apc.shm_size增加到96M.缓存完整计数现在为0,并且在网站刷新几次后,缓存有96.5%的命中率. APC内存使用量为25.4MB免费.
它似乎已经将加载时间减少了3秒左右,如果我从服务器本身做一个纯粹的wget而没有得到任何图像等,现在减少了大约4到5秒.仍然比其他主机慢两倍但是肯定是一种提升.
我仍然觉得奇怪的是,为什么在服务器完全空闲时渲染这些页面花了这么长时间(我没有在我的开发PC上安装APC而且它没有那种行为).并且仍然奇怪的是那些额外的剩余秒数被浪费了.