开发者社区> 问答> 正文

如何知道运行多少个进程最有效率?

如何知道运行多少个进程最有效率?

展开
收起
我的中国 2017-11-30 19:02:25 1833 0
2 条回答
写回答
取消 提交回答
  • 看他最大能运行多少

    2019-07-17 21:46:48
    赞同 展开评论 打赏
  • R&S网络资深工程师 ,阿里云论坛官方版主,阿里云云计算ACP,春考教学网站长,IT技术晋级之路专辑作者

    从/proc/cupinfo信息可以看出,E5-2670V2有10核心(cpu cores)20超线程(siblings),你的服务器是双路(两个CPU),总计就是20核心40超线程.
    要最大化程序的性能,就应该避免程序被网络或者文件IO阻塞,也应该避免CPU出现过多的上下文切换.
    拿Linux上的Nginx来说,Nginx利用内核epoll实现网络异步,小文件用sendfile,大文件用AIO线程池,来尽量避免工人进程被阻塞,工作进程数则设为CPU核心数来避免CPU频繁上下文切换.
    同理,运行在PHP-FPM的PHP代码,应该避免使用curl等可能会产生较长网络IO的代码,对于一些经过PHP验证身份后输出的附件,为了避免文件阻塞,可以用header("X-Accel-Redirect: $file_path");委托给Nginx返回给客户端,最后,没了网络和文件IO的阻塞,就只剩下计算,这时PHP-FPM也是计算密集型应用,所以PHP-FPM工作进程数也可以设为CPU核心数.

    可以在这台40超线程的服务器跑LAMP服务,看哪种情况下性能最佳:
    10 Nginx + 30 PHP-FPM
    15 Nginx + 25 PHP-FPM
    40 Nginx + 40 PHP-FPM

    2019-07-17 21:46:48
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
服务上云加速大家居产业C2M进程 立即下载
小程序 大世界 立即下载
《15分钟打造你自己的小程序》 立即下载

相关实验场景

更多