我有一台具有以下配置的 LAMP 服务器 -
- 32 位操作系统 Debian Etch
- Apache 2.2
- PHP 5.2
- MySQL 5.0.32
硬件
- 3 GB 内存
- 2 个 Intel(R) Xeon(R) 1.86GHz CPU
每个 Apache 进程占用大约 10mb 内存。Apache 访问日志已禁用。使用 apt-get 安装 Apache、MySQL 和 PHP。
Apache 每秒点击次数的峰值为 415 次/秒
需要知道这是否太多了,因为我的 Apache 由于内存用完和交换而需要每半小时重启一次。
它可能出了什么问题,请帮忙……
添加 Apache 配置:
Timeout 300
KeepAlive Off
MaxKeepAliveRequests 100
KeepAliveTimeout 15
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
MaxClients 150
MaxRequestsPerChild 100
</IfModule>
<IfModule mpm_worker_module>
StartServers 4
MaxClients 600
MinSpareThreads 50
MaxSpareThreads 150
ThreadsPerChild 25
MaxRequestsPerChild 0
</IfModule>
答案1
ps/top 在内存使用方面有点撒谎。您看到每个进程使用 10megs 的空闲内存,但 apache 加载了大量共享库,每个进程可能使用 9meg 的共享库。因此,您的实际使用量可能是 9megs 的共享库(假设尚未加载)+ 每个正在运行的进程的 1-1.5meg。
但要回答你的问题...如果您不显示配置和您所看到的错误,我们如何帮助调整任何东西?此外,内存/CPU 在应用程序运行时确实被占用。如果您的应用程序占用大量内存...Apache 配置无法解决这个问题。
这是我在对您的系统一无所知的情况下会做的事情。增加它可以接受的客户端数量。确保 keepalive 已关闭,或者如果您需要它,请将超时时间设置得很小。2-3 秒。
答案2
至少发布你的 phpinfo()。或者 httpd.conf/php.ini。你可以使用jsfiddle转储 phpinfo()(我建议在发布到网上之前删除域名或服务器名称等内容)并粘贴箱适用于您的 httpd.conf / php.ini。
根据给出的信息,我们几乎无法提供帮助。您可以尝试删除未使用的模块,并减少 php.ini 文件内每个 PHP 实例所需的内存量,这是第一步.....
httpd.conf 通常可以在 /etc/apache2/conf/httpd.conf 中找到
php.ini 通常可以在 /etc/php/php5/php.ini 中找到
或者类似的东西,取决于您如何编译源。
如果你必须每半小时重新启动一次 Apache 才能使其再次运行,则你尝试运行的应用程序可能有问题,它可能使用了太多内存,或者你安装了太多共享库。
答案3
- 升级到 Debian Squeeze。Etch 已经有一段时间不受支持了,并且不会获得安全更新。如果您正在运行 PHP,安全更新就尤为重要。
- 如果可能的话,用 64 位操作系统升级或替换 32 位操作系统。
- 放入更多 RAM。RAM 很便宜。(8-16GB 是更现实的数字)
- 为 PHP 安装 APC Opcode Cache。
- 编辑你的问题,向我们展示你的
php.ini
文件。认真的。