有个PTS用户反映系统性能压不上去,CPU利用率只有压到12%,TPS运行一分钟后骤降,并且越来越慢,波动较大。
事务只包含一个PHP页面请求,后台系统架构是apache2.2+PHP5.3+mysql+windows2003,压测请求无sql操作,排查mysql问题。
查看操作系统CPU和MEM系统资源很空闲,CPU和内存应该不是瓶颈。
检查apache配置也没发现问题 ,1200执行线程,有点大,但是远远满足并发要求,怀疑是PHP的问题导致性能不稳定,觉得压测一个静态资源请求,看TPS是否稳定
测试静态资源文件TPS很稳定,说明问题可能在PHP这里, 检查PHP配置文件php.ini:
看到PHP session 设置策略初步怀疑是session设置导致的性能问题,因为在并发压测中,每次请求都会创建一个session,每个session在D:/tmp创建一个文件
执行一段时间后,统计目录下文件过多导致性能下降。
和用户沟通,压测的请求并不需要session,于是更改session.auto_start = 0 后重新压测:
改session设置后TPS终于稳定了,由于外网带宽限制,改成内网测试
内网测试TPS增长到1530,CPU也充分利用起来,到达100%。
说明PHP session files方式保存对性能响应较大。
事务只包含一个PHP页面请求,后台系统架构是apache2.2+PHP5.3+mysql+windows2003,压测请求无sql操作,排查mysql问题。
查看操作系统CPU和MEM系统资源很空闲,CPU和内存应该不是瓶颈。
检查apache配置也没发现问题 ,1200执行线程,有点大,但是远远满足并发要求,怀疑是PHP的问题导致性能不稳定,觉得压测一个静态资源请求,看TPS是否稳定
测试静态资源文件TPS很稳定,说明问题可能在PHP这里, 检查PHP配置文件php.ini:
session.auto_start = 1 #每次打开页面执行session_start(),初始化session
session.save_path = "D:/tmp" #session文件保存地址
session.save_handler = files #session保存方式
看到PHP session 设置策略初步怀疑是session设置导致的性能问题,因为在并发压测中,每次请求都会创建一个session,每个session在D:/tmp创建一个文件
执行一段时间后,统计目录下文件过多导致性能下降。
和用户沟通,压测的请求并不需要session,于是更改session.auto_start = 0 后重新压测:
改session设置后TPS终于稳定了,由于外网带宽限制,改成内网测试
内网测试TPS增长到1530,CPU也充分利用起来,到达100%。
说明PHP session files方式保存对性能响应较大。