在Apacheconfiguration中使用prefork或工人?

有一个Apache服务器版本(Apache / 2.2.13),我想使用MPM模块但我不知道什么使用prefork或工人,我需要什么样的configuration?

规范:

拉姆:4G

CPU:Intel(R)Xeon(R)CPU E5405 @ 2.00GHz

grep -c处理器/ proc / cpuinfo 8

最大每个Apache进程的大小:23M

答案是“取决于” – 可以依赖的东西:

  1. 你打算在你的Apache环境中使用PHP吗? 如果是这样的话,那么使用worker MPM可能不会让你看到这个链接,因为某些PHP模块不是线程安全的。

  2. 您是否计划执行可能需要locking文件的操作? 如果是这样,那么使用工人MPM可能不适合你。 线程不是完整的POSIX进程,因此不一定遵从文件locking操作。

    一个例子是Subversion版本<1.5 – 这些版本使用Berkeley DB的apr和apr-util库来执行提交。 伯克利数据库依靠locking,因此这可能会导致提交损坏您的存储库

要做的关键是要弄清楚你正在试图用你的Apache服务做什么 – 你如何尝试提供服务,后端进程如何操作来构造要提供的数据。

  • 你只是通过mod_proxy或AJP与Tomcat服务连接? 和工人一起去往往是可以的。
  • 你用Apache模块做什么(SVN,PHP是两个例子)? 在这种情况下,prefork可能会更安全。
  • 你使用的NFS(并不总是支持正确的文件系统locking)? 再prefork可能是更安全的select。

YMMV – 但最终你需要理解底层的架构,才能对此做出真正的判断。 如果你不了解架构,那就用prefork吧,因为它是更安全的路线。

如果你只使用线程安全模块(例如,mod_php没有任何非线程安全的扩展),你一定要去找MPM worker,因为它更适合现代系统(多进程,multithreading)。