Lighttpd大上传内存消耗

考虑以下情况:

  • 我正在运行lighttpd-1.4.19,并且正在处理大量的上传(数百MB但小于1GB)。
  • 服务器在Ubuntu 8.04 LTS上运行。
  • 文件被临时写入/ var / tmp。
  • PHP5正在通过fastcgi处理最终结果。
  • 在上传过程中,上传块被写入临时目录。

奇怪的是,虽然块被写在磁盘上,但是在上传过程中,服务器上的空闲内存逐渐减less到最大文件大小。 我会理解,随着每个块的大小(比如1-2MB),RAM会缩小,直到它们写在磁盘上,但我不明白为什么它是整个文件大小(比方说300MB)。

  1. 你知道为什么内存将被占用整个文件,虽然块写在磁盘上? 是否可能/ var / tmp直接挂载在内存中? 与/ tmp?
  2. 如果没有,你会知道如何诊断和如何查明哪个进程正在占用内存? 我没有看到lighttpd和php-cgi过程与ps增加,但也许我不看正确的事情。
  3. 或者更好的是,你会有一个好的networking服务器(Apache,Nginx的,lighttpd等)和configuration来处理大上传的build议,而不是在RAM中存储的一切?

谢谢!

如果lighttpd或者php-cgi的大小没有增加,那么不要担心 – 你看到的增长不是在这些进程的RAM消耗中,而是在内核中使用磁盘caching。 基本上,因为你只是写出这些大文件,内核假设你可能想再次阅读它们,内存保持在内存中。 如果其他进程需要该内存,它当然会放弃这个caching。