Dor*_*jan 2 memory-usage apache-2.2
Mem: 8176880k total, 8059736k used, 117144k free, 93040k buffers
Swap: 1004052k total, 108k used, 1003944k free, 7257056k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4992 mysql 20 0 291m 115m 5380 S 65 1.4 739:54.71 mysqld
20260 apache 20 0 43032 18m 3964 S 27 0.2 0:02.50 apache2
20154 apache 20 0 41588 16m 3964 S 10 0.2 0:00.40 apache2
<snip>
Run Code Online (Sandbox Code Playgroud)
这是:Mem:总共8176880k,使用了8059736k;有什么好担心的!?
和想法?
非常感谢
编辑:忘了说我对服务器一无所知,我已经遇到了这个......
回答:
> free -m
total used free shared buffers cached
Mem: 7985 7665 320 0 89 6942
-/+ buffers/cache: 633 7352
Swap: 980 0 980
Run Code Online (Sandbox Code Playgroud)
毕竟看起来我没有记忆问题
这很好 - 使用时 VIRT 值通常在这个数字附近prefork.c(我假设你是):
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
10385 apache 15 0 376m 48m 3932 R 20.3 1.2 0:01.34 httpd
10423 apache 16 0 376m 46m 4576 S 15.0 1.2 0:01.09 httpd
10153 apache 15 0 337m 61m 4672 S 11.6 1.6 0:03.94 httpd
10419 apache 15 0 383m 54m 4696 S 11.6 1.4 0:01.00 httpd
Run Code Online (Sandbox Code Playgroud)
您要监视的值是 RES - 这是子线程消耗的最大内存量的大小(在我的情况下,PHP 作为该线程的一部分运行,因此加载库和数据时会“膨胀”) . 线程不会释放分配的内存,但是当 apache 进程按照最大请求数杀死线程时
<IfModule prefork.c>
MaxRequestsPerChild 1000
Run Code Online (Sandbox Code Playgroud)
线程将返回到其本机内存消耗。
要降低这些值,请确保仅加载所需的 apache 模块,并在运行非常大的 PHP 脚本时监视 apache 的线程(ini_set('memory_limit', '128M');然后将数据递归加载到数组中 - 应该这样做)。然后,在实际使用过程中,降低 MaxRequestsPerChild 值,直到您看到您的 apacheRES处于合理的水平。
以下是一些有用的参数调整文章:
| 归档时间: |
|
| 查看次数: |
1212 次 |
| 最近记录: |