V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
someFork
V2EX  ›  程序员

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

  •  
  •   someFork · 2013-06-26 11:50:18 +08:00 · 4116 次点击
    这是一个创建于 4198 天前的主题,其中的信息可能已经有所发展或是发生改变。
    (如何贴图)
    http://i42.tinypic.com/2u4n8zn.png


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

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

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

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

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

    上面绿色的是线程 (内存占用一样),下面是进程 (内存占用有少许不同)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3011 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 13:58 · PVG 21:58 · LAX 05:58 · JFK 08:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.