Apache重载VIRT与RES内存


8

我有一台Debian 5服务器,它获得了大量流量。现在,服务器具有4 GB的RAM,没有交换内存。我首先看到Apache进程每个消耗大约18​​0 MB的虚拟内存(VIRT),以及16 MB的实际RAM(RES)。那么我可以同时运行多少个Apache线程?大约4 GB / 180 MB = 22或4 GB / 16 MB = 256?

Answers:


10

虚拟内存大小不如您的驻留集重要。虚拟内存将包含映射到的内容,例如共享库和诸如此类的东西(它们只会驻留在物理RAM中一次)。RSS告诉您内存中实际存在的内容,即Virt。告诉您吞没了多少可用虚拟地址空间。

您的第二个计算将非常接近,尽管它很低。一台具有4GB RAM的服务器可以运行超过256个Apache进程。根据您的流量模式和IO等待限制,运行超过256个可能是一个好主意,因为这些进程中有很多可能只是在等待内核将数据从一个设备发送到另一个设备。还应考虑到COW之类的因素以及所有内容都指向相同的“ httpd”二进制文件这一事实,您可以获得更高的效率。

现在,使用2GB的交换空间重建您的系统。交换不再仅仅是“慢速记忆”。

作为免责声明,自从我关心Linux内存管理的细节以来已经有很长时间了,也许我的观点有点不对,但是要旨是坚定的!


为什么它可以运行超过256个apache进程?我有8Gb只能在8Gb左右运行的应用程序。
gcb

-1。“具有4GB RAM的服务器可以运行超过256个Apache进程”,每个进程16MB,这将导致交换,根据有关该主题的所有性能指南,这是最主要的问题。
2014年

如果在总共有16Gb RAM可用的系统上运行4 gb jvm堆(具有无限线程),并且free报告整个内存已满,会发生什么情况?0或几个100mb的可用内存?jvm“容器”的已用/可用内存的良好比率是多少?
niken

1

该值主要取决于您当前服务器负载的试验情况。

尝试使用“ apache top”收集一些数据。进行一些配置更改,然后重试。因为我不知道您的特定用例,所以很难提出一些具体数字。

如果您想要Web服务器的可预测内存消耗,请访问 http://wiki.nginx.org/Main

它以一种非常酷的方式解决了一些可伸缩性问题。

并非每个用例都合适,但一定要考虑一下。

您可以部署它以减少apache实例的负载。它适用于在反向代理配置以及其他高负载情况下提供静态和缓存内容。

旋转一下,它是免费的:-)

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.