系统概况:阿里云ECS,1G内存,单核,带宽1Mbps。

[x@code quickdist]# free
             total       used       free     shared    buffers     cached
Mem:       1020648     917988     102660          0     187980     238204
-/+ buffers/cache:     491804     528844
Swap:            0          0          0
[x@code quickdist]# cat /proc/c
cgroups  cmdline  cpuinfo  crypto   
[root@code quickdist]# cat /proc/cpuinfo 
processor       : 0
vendor_id       : GenuineIntel
cpu family      : 6
model           : 45
model name      : Intel(R) Xeon(R) CPU E5-2630 0 @ 2.30GHz
stepping        : 7
cpu MHz         : 2300.186
cache size      : 15360 KB
physical id     : 0
siblings        : 1
core id         : 0
cpu cores       : 1
apicid          : 0
initial apicid  : 0
fpu             : yes
fpu_exception   : yes
cpuid level     : 13
wp              : yes
flags           : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat clflush mmx fxsr sse sse2 ht syscall nx lm up rep_good unfair_spinlock pni ssse3 cx16 sse4_1 sse4_2 popcnt aes hypervisor lahf_lm
bogomips        : 4600.37
clflush size    : 64
cache_alignment : 64
address sizes   : 46 bits physical, 48 bits virtual
power management:



测试一个多表反复JOIN的接口的性能。人肉压测方法:不断点屏幕刷新。效果如下:


PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND                                                                                                   
 6019 mysql     20   0  602m  68m 4500 S 12.0  6.9   5:13.13 mysqld                                                                                                     
19350 www       20   0  247m  47m 8596 S  4.3  4.8   0:11.52 php-fpm                                                                                                    
13372 www       20   0  256m  58m 8428 S  4.0  5.9   0:50.62 php-fpm                                                                                                    
13757 www       20   0  257m  58m 7436 S  4.0  5.9   0:58.07 php-fpm                                                                                                    
13373 www       20   0  249m  50m 8684 S  3.0  5.0   0:57.08 php-fpm


可见:php的内存使用比较泛滥,需要优化。mysql会成为瓶颈,需要大力优化SQL语句,可以考虑采用NoSQL的思路解决JOIN问题,另外,还需要减少无效的SQL请求次数。


对比一个简单页面的人肉压测,SQL压力非常小,php的内存消耗依然比较大:

                                                                                  

13373 www       20   0  249m  50m 8684 S  3.7  5.0   0:57.48 php-fpm                                                                                                    
19350 www       20   0  247m  47m 8596 S  3.7  4.8   0:11.89 php-fpm                                                                                                    
13757 www       20   0  257m  58m 7436 S  2.7  5.9   0:58.43 php-fpm                                                                                                    
13372 www       20   0  256m  58m 8428 S  2.3  5.9   0:50.96 php-fpm                                                                                                    
 6019 mysql     20   0  602m  68m 4500 S  1.0  6.9   5:13.39 mysqld