最适合我的服务器? Nginx的/阿帕奇/ LightHttpd

我需要安装我的新专用服务器(英特尔凌动E220 1.6 Ghz一核心,2 GB内存)

而我的网站是不是一个平常的网站。 它有许多并发进程(PHP),这是因为一些PHP请求超过1秒。 该脚本已经过优化,但是会执行cURL请求和套接字连接,并且每个响应都需要等待大约1秒。

所以,我有〜100个并发,1秒长的PHP请求。

女巫configuration最适合我?

安德鲁

编辑 – 补充信息

我家有一台服务器,这是'检测服务器'。 我有专门的数据中心,这是“网站服务器”。

检测服务器是用C#编写的,在linux下用mono编译。 基本上检测服务器是一个asynchronous套接字服务器。 此检测服务器中的每个线程都需要0.5到1.0秒。

网站服务器有一个简单的脚本,叫做check.php。 这个脚本非常简单:它连接到检测服务器,发送一个string。 检测完成(〜1秒)后,读取响应表单检测服务器。

除了最极端的情况外,服务器的select与性能无关。

您的问题的答案是延迟请求 – 响应周期。 IOW:使用队列

这取决于你需要什么其他function,所以为了简单起见,我假设除了服务PHP脚本和静态文件之外,没有别的东西需要了。 我怀疑你描述的应用程序即使在Atom上也会受到CPU限制,所以我猜测RAM将成为你瓶颈的关键原因。

如果这些请求确实需要并发,而不是一些排队正常,那么您将需要足够的内存,至less有100个PHP实例和相关的Web服务器工作者同时运行。 如果你的PHP编译完全是线程安全的(libcurl模块是线程安全的,你需要检查你使用的任何其他的,但我相信最多的是线程安全的),你可能能够减less这个我使用Apache与基于线程的MPM。安全这些天),因为我相信这将允许通过apache / mod_php / php更高效地共享代码页。 如果线程安全的运行是不可能的,那么你可能要考虑一些比Apache更轻的东西,那么你至less可以减less这部分的占用空间,所以lighttp或者nginx通过fCGI运行PHP(这往往比安装更容易Apache + mod_php作为大多数发行版将基本上为您开箱即用apache + mod_php保存一点调整,但可以显着更多的RAM效率,然后Apache)。

如果使用Apache,可以通过将nginx(或lighttp)放在Apache之前,减lessPHP加载被“浪费”服务静态文件的工作人员(意味着您需要允许更多的工作人员而不是实际需要的PHP代码的请求)一个反向代理 – 处理所有静态请求的低RAM事件驱动的服务器,只需要发送需要PHP的请求到Apache。

你的应用程序有多复杂,你是如何lockingPHP的? 在你的问题中的描述(许多工作人员只是坐等待发生的事情)有助于提出一个完全事件驱动的解决scheme,而不是一个基于进程/线程的解决scheme,但是这意味着要离开PHP。 目前有很多基于事件的networking架构,其中一些显然非常稳定。 除了一个, node.js是当前stream行的风格之一。 在完全事件驱动的安排下,每个并发请求将使用很less的额外RAM。 你可以混合搭配技术 – 使用RAM高效的事件驱动的Web服务器来处理静态文件和代理两个node.js实例(运行你的代码,将花费所有的时间等待外部世界的请求返回)和Apache实例(运行你剩余的PHP代码),虽然这种混搭可能不会对你有吸引力,这取决于你的技术知识水平和信心,因为设置比apahe + mod_php更复杂。

编辑

用你的PHP脚本的新的描述,你应该能够使用php的curl模块的curl_multi_*函数来执行asynchronous的HTTP请求。 这意味着您的所有检查都可以通过一个PHP进程来完成,这意味着内存使用问题并没有实际意义,而切换Web服务器几乎没有区别。 如果参考资料没有使整个过程清晰,请参阅PHP手册以获得对这些函数和示例的引用,以获得更多类似教程的示例。

如果这是一个自动化的过程,并且你不需要HTTP响应(也就是说你只是将响应logging在数据库中进行进一步分析),你甚至可以直接从cron作业运行php脚本,而不需要web服务器。