我需要使用LAMP在运行Ubuntu的VM服务器上使用尽可能少的RAM。是否有使用最小内存的已知提示?我已经设置了MySQL缓存/子缓存,但这没有多大帮助。
我需要使用LAMP在运行Ubuntu的VM服务器上使用尽可能少的RAM。是否有使用最小内存的已知提示?我已经设置了MySQL缓存/子缓存,但这没有多大帮助。
你应该做的是保留Linux,Mysql和PHP,但不要使用Apache。或者至少,停止在Apache中运行PHP。
您可能正在使用Apache prefork模型和进程内PHP模块。这对于大多数工作负载的内存效率来说非常糟糕,因为即使对于刚才没有请求任何动态内容的HTTP连接,它也会保持繁重的PHP进程。
您要做的是使用另一个Web服务器(例如Nginx,但Apache也可以工作)并将PHP作为FastCGI守护程序运行。这很容易设置和谷歌搜索“PHP fastcgi”返回众多的例子。
然后,您可以使用运行PHP的少量固定数量的“重”进程(我认为每个核心不超过几个),但仍然具有运行实际应用程序的良好容量,因为“空闲”HTTP连接,例如那些服务保持活动或等待请求不会耗尽“繁重”进程,只会使用较轻的Web服务器进程。
使用有限分叉/少数进程的Web服务器可能更好 - 例如Nginx或具有不同线程模型的Apache。这与mod_php不兼容,因此您需要将其作为FastCGI运行。
确保你在mysql中关闭InnoDB,这将减少大约100MB的内存
你可以设置 memory_limit
在php.ini中更小的东西。但是,如果您的程序请求的内存超过限制,则脚本将崩溃并发生致命错误。
这只会改变PHP中的内存使用量。 my.cnf中的MySQL可能有类似的设置,但我不知道它会是什么。
实际上,减少内存使用的最佳方法是编写不使用大量内存的程序。
关于 MySQL的, 阿帕奇 和别的: http://library.linode.com/troubleshooting/memory-networking#sph_diagnosing-and-fixing-memory-issues
对于 PHP:在php.ini中你可以设置 memory_limit的。
对于 Linux的:使用32位版本(直到你拥有超过4Gb的RAM)。
在真正需要之前不要减少所有这些设置,否则会导致性能下降。尽量为您的系统提供足够的内存。