【发布时间】:2016-09-17 15:35:24
【问题描述】:
我有一个 Codeigniter 项目,其中包括一个“时间昂贵”的同步。基本上我通过 OCI8 连接到远程服务器(可能运行 CentOS,但我只知道这些)到 Oracle 数据库,选择大约 20,000 行,然后更新本地 MySQL 数据库。
同步持续大约 20ihs 分钟(是的,MySQL 可以更优化,什么都没有),但这不是我目前遇到的问题......
我有配备双 Xeon 和 16 Gig ram、CentOS x64、Apache 2.2.15、PHP 5.6.21 和 MySQL 版本 5.6.30 的专用服务器。
现在,使用 Apache 2 处理程序和默认的 PREFORK MPM,同步可以按预期工作。
如果我离开 Apache 2 处理程序(我认为是 mod_php)并将 MPM 更改为 WORKER 或 EVENT,则同步开始并且 PHP 会吐出白屏死机,而日志文件中没有任何内容。
如果我切换到 fcgi 和 EVENT 或 WORKER MPM,同步开始,大约 2 分钟后它给我“网关没有收到来自上游服务器或应用程序的及时响应。”
请注意,从我切换回 Apache 2.0 处理程序和 PREFORK 的那一刻起,服务器之间没有连接问题,它按预期工作。
Codeigniter 版本是 2.1.0(是的,我知道它升级很久了,它只是继承的项目,我不完全知道 CORE 文件是否发生了一些变化,而且这个家伙“工作得很好,不是吗”。
任何类似问题的线索或链接都非常感谢。
提前致谢
【问题讨论】:
-
我真的很好奇您为什么要从 Prefork(正在工作)切换到另一个?我的意思是它没有解释为什么这个行得通而另一个没有......
-
因为我正在运行 SSL 站点,并且从我在这里读到的已接受答案来看,这应该是相当不错的事情 serverfault.com/questions/383526/… 另外因为 Prefork MPM 使用多个子进程,每个子进程都有一个线程,并且每个进程一次处理一个连接。 Worker MPM 使用多个子进程,每个子进程有很多线程。每个线程一次处理一个连接。它应该在 RAM 上更容易,因为它会根据请求生成新进程......所有这些都基于我在网上阅读的内容
标签: php mysql apache codeigniter server-configuration