![Apache worker mpm,一个进程和多个线程:了解性能](https://linux22.com/image/614934/Apache%20worker%20mpm%EF%BC%8C%E4%B8%80%E4%B8%AA%E8%BF%9B%E7%A8%8B%E5%92%8C%E5%A4%9A%E4%B8%AA%E7%BA%BF%E7%A8%8B%EF%BC%9A%E4%BA%86%E8%A7%A3%E6%80%A7%E8%83%BD.png)
有一个用 mod_perl 编写的服务器端程序。我使用共享的 apache worker mpm 内存,只有一个进程和大约 60 个线程。我使用锁来临时保护对共享内存的访问,不过 1.7 秒中只有 0.1 秒是锁定时间。
问题是,10 个连续请求和 10 个并发请求的速度相同。
我的压力脚本启动了n每次请求间隔 0.1 秒的繁重 URL 处理请求数。括号中的数字为请求数。
perl stressTestServer.pl n=1
DONE ( 0 ) > 1.778257 sek
perl stressTestServer.pl n=5
DONE ( 3 ) > 8.71926 sek
DONE ( 0 ) > 8.85207 sek
DONE ( 1 ) > 8.976061 sek
DONE ( 4 ) > 9.119936 sek
DONE ( 2 ) > 9.218552 sek
perl stressTestServer.pl n=10
DONE ( 9 ) > 8.840539 sek
DONE ( 7 ) > 9.130133 sek
DONE ( 8 ) > 9.271598 sek
DONE ( 6 ) > 9.873936 sek
DONE ( 5 ) > 10.02668 sek
DONE ( 4 ) > 18.169001 sek
DONE ( 3 ) > 18.432776 sek
DONE ( 2 ) > 18.617186 sek
DONE ( 1 ) > 18.775277 sek
DONE ( 0 ) > 18.821972 sek
对于这种设置来说,这是否正常?这是在双核上测试的。换成四核,我能期待这种设置带来什么性能差异?我很难相信更多的内核会有帮助。感觉序列化执行可能比并发线程更有效率。
tx 输入!