我通常使用 PHP 编写代码,并且一直使用 apache。我已经创建了自己的网站,但很快意识到 apache 并不是最好的解决方案:它每页使用 15MB 内存,当有大约 200 个并发用户时,小型服务器就会耗尽内存。
现在,我正在寻找其他解决方案,并快速浏览了 lighttpd 或 nginx,所以我的问题是:
使用上述两种更简单的选项,是否会让我的服务器能够处理更多用户?我之所以问这个问题,也是因为,随着我在这里打字,我的网站正在不断增长,服务器端的成本将非常高,这样一来,当我有 2000 个用户时,我将需要 10 台网络服务器,这是不可接受的。
我还阅读了有关 node.js 和 Express 的文章,这些是 PHP 的有效替代品吗?我不是在开发像聊天这样的实时应用程序,而是在开发更像论坛的东西。
提前致谢。
答案1
这在很大程度上取决于您的网站/网络应用的“配置”。
它是否大量使用 SQL,您提供的是动态内容还是静态内容?
您每秒有多少个请求?
几个月前我也遇到过你的情况,当时我也有一个快速发展的网站,但不知道该怎么做,经过一些研究和测试后,我使用了以下工具集:
php-fpm dameon
APC 缓存
lighttpd/fastcgi 与 fpm 守护进程的连接
它运行得非常好,在此之前我只是使用带有 eaccelerator 的 apache/php,每秒 50 个请求的速度很吃力。
现在我在同样的硬件上每秒有 300 多个请求,服务器甚至没有出什么问题。lighttpd
/nginx 或类似程序的一个优点是能够以非常小的占用空间和很少的开销提供静态文件,而没有 fastcgi 的 apache 即使提供静态文件也会占用相当大的空间。
php-fpm 使您能够将预处理与基础设施的服务层分离,并与 APC 缓存配对,从而形成一个性能良好的工具集。
答案2
答案3
我会一直使用 nginx。您当前的服务器有多少内存?您确定 PHP 是问题所在吗?如果是论坛,也可能是使用所有内存的 mysql 服务器(如果有)
答案4
Nginx 使用的内存肯定比 Apache 少。一个问题是,大多数托管服务提供商会为您提供控制面板来配置 Apache,但很少有人为 nginx 提供控制面板。这意味着您必须手动配置服务器,这也意味着您不太可能从主机获得任何支持。管理一个运行论坛软件的 2000 个并发用户的 Web 服务器很难。现在这可能是一个可以容忍一些停机时间并且您学习速度很快的社区网站,但您应该记住这一点。您可以通过禁用任何不使用的模块并将 PHP 作为 fast-cgi 而不是 Apache 模块运行来减少 Apache 的内存使用量。做一些测试。
nodejs 确实很酷,占用内存少,但是你必须学习一个全新的编程范式。这是一个有效的替代方案,但它是否对你来说是一个现实的挑战则是另一回事。