[有截图] 服务器内存为什么不高

2013-06-26 11:50:18 +08:00
 someFork
(如何贴图)
http://i42.tinypic.com/2u4n8zn.png


我开了100个apache2进程,
每个进程占8M左右,
那应该用去800M才对。
为什么top命令显示才100M多?
4021 次点击
所在节点    程序员
12 条回复
yanwen
2013-06-26 11:57:48 +08:00
这个是怎么配色的??这么好看??我一般top命令 显示的 只是黑白色的。。没有蓝色。。
laogui
2013-06-26 12:09:06 +08:00
@yanwen 装一个htop就可以了,yum install htop
est
2013-06-26 12:12:08 +08:00
同属于一个process group进程可以共享内存的呀。copy on write
goodan
2013-06-26 12:14:08 +08:00
帮传图
someFork
2013-06-26 13:01:32 +08:00
谢谢各位回答,虽然主要是讨论 htop
msg7086
2013-06-26 13:19:22 +08:00
请先研究下fork函数……
someFork
2013-06-26 14:27:09 +08:00
@est
@msg7086
看来网络上的文章是错的,都是说如果一个apache2占10M左右,那么1G的vps的MaxClients 就应该1G处以10M等于100.

那么我的MaxClients 应该设置多少才合理?
AstroProfundis
2013-06-26 15:26:17 +08:00
htop 显示的这个貌似是线程吧
wppurking
2013-06-26 15:28:47 +08:00
@AstroProfundis 前面是有 pid 的进程.
ohhe
2013-06-26 15:36:34 +08:00
netstat -anpo | grep "php-cgi" | wc -l
msg7086
2013-06-26 16:11:16 +08:00
@someFork
@AstroProfundis
假定楼主用的是prefork方式的apache。fork是linux下的新建进程的函数,fork运行过程中进程会分裂为2个,这2个进程完全共享内存空间,直到任何一方对变量做出修改为止。所以首先进程的程序部分是完全共享的。然后数据区的话,只有进程间变量不同的部分才会实际占用空间。所以具体的maxclient数量你可以先算出每个多一个进程时候的增长量,然后再估算总体的内存空间。另外最好预留一些内存给系统做buffer来提高速度。

@wppurking htop里线程也有pid。可以在setup里设置关闭或者显示userland threads。线程是绿色显示的,而进程是白色。

典型的mysql就是多线程模型,而nginx/apache-prefork就是多进程模型。

linux下的进程非常轻量,不调用exec的话只比多线程多了一点点开销,但是会换取更多的线程安全。
msg7086
2013-06-26 16:23:29 +08:00
http://img.ly/system/uploads/007/515/834/large_htop-model.png

上面绿色的是线程 (内存占用一样),下面是进程 (内存占用有少许不同)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/73667

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX