所以我在云端服务器上有nginx和php-fpm。 使用这些设置的Apache基准:
ab -n 300 -c 5 http://example.com/
所以云服务器(从机架空间)是一个256MB的。 我跑了htop而Apache基准进行,所以我可以看到服务器资源。
所有四个处理器(我是否只有四个单独的处理器的一部分在机架空间?我不知道我有多less访问)是100%(或98%或某种程度上高)整个时间的Apache基准是运行。
目前我每秒获得15个请求。 我的第一个想法是调整服务器的大小(我把它改成512MB的,所以它应该是所有东西的两倍)。 尽pipe如此,每秒的请求数也完全相同,处理器使用率一直处于/接近100%。
然后我试着改变php-fpm有一个静态的20个进程(而不是10个)。 这和以前一样的结果。
这个瓶颈会是什么?
我在这个特定的页面上的一般应用程序(用PHP编写)只是连接到一个数据库,并得到一个产品列表。 然后把它们列在一张表中。 不是很多复杂的查询(虽然有很多)
那么也许它是数据库相关的?
最好的办法是安装一个代码分析器,比如XDebug 。 安装XDebug,然后启用分析器。 它会生成一个报告,您可以快速检查,并找出代码的哪些部分占用了大部分的处理时间和内存使用情况。 然后,您可以在代码中精确定位这些区域以进行优化。
你能提供一些关于PHP代码实际上在做什么的更多信息吗?
你可以运行“top”,看看哪个进程(nginx,php-fpm或mysql)实际上吃了CPU。 这将表明瓶颈。 为了更容易解释结果,请暂时将php-fpm进程的数量设置为4.例如,如果你得到4个php-fpm进程,每个进程占90%的CPU,5%的nginx和20%的mysql,那么一些重的math在你的PHP脚本中是瓶颈。 如果php-fpm进程大部分是空闲的,而且mysql吃了很多CPU,那么数据库就是瓶颈,考虑添加一个或两个索引。