Php 为什么Apache会产生太多进程?

Php 为什么Apache会产生太多进程?,php,wordpress,apache,apache2,Php,Wordpress,Apache,Apache2,我的LAMP服务器上有一个WordPress博客。我必须在短时间内向WordPress API发出20000个POST请求,以创建帖子(我从其他CMS迁移到WordPress) 为此,我运行迁移脚本,它需要点击https://example.com/wp-json/wp/v2/postsendpoint 20.000次。大约1000次请求后,我的服务器速度变慢,平均负载变为15。当我选中top时,我得到的是: 5827 www-data 20 0 943612 73000 3342

我的LAMP服务器上有一个WordPress博客。我必须在短时间内向WordPress API发出20000个POST请求,以创建帖子(我从其他CMS迁移到WordPress)

为此,我运行迁移脚本,它需要点击
https://example.com/wp-json/wp/v2/posts
endpoint 20.000次。大约1000次请求后,我的服务器速度变慢,平均负载变为
15
。当我选中
top
时,我得到的是:

 5827 www-data  20   0  943612  73000  33424 S  4.7  3.6   0:24.62 apache2
 5828 www-data  20   0  943960  79112  38768 S  4.0  3.9   0:16.26 apache2
 5861 www-data  20   0  944280  86568  45968 S  4.0  4.3   0:06.47 apache2
 6047 www-data  20   0  943692  77288  37292 S  3.7  3.8   0:00.46 apache2
 5835 www-data  20   0  942212  85760  47096 S  3.3  4.2   0:05.01 apache2
27086 mysql     20   0 1208472 187212  21124 S  3.0  9.3  18:52.19 mysqld
 5863 www-data  20   0  944452 103896  64936 S  2.7  5.1   0:06.97 apache2
 5826 www-data  20   0  942604 102272  63264 S  2.0  5.1   0:06.66 apache2
 5854 www-data  20   0  944252  84776  46180 S  1.3  4.2   0:06.96 apache2
 5967 www-data  20   0  941856  82388  44128 S  1.3  4.1   0:03.98 apache2
 6046 www-data  20   0  943692  77476  37356 S  1.3  3.8   0:00.51 apache2
 5860 www-data  20   0  942224  84668  46048 S  0.7  4.2   0:06.93 apache2
 6059 www-data  20   0  941644  75192  37164 S  0.7  3.7   0:00.20 apache2

当我停止迁移脚本时,这些进程仍在运行,高服务器负载保持不变(大约
15
)。唯一有帮助的是
sudoapachectl重新启动
。但是,我重置了apache2,再次运行迁移脚本,然后在1000个请求之后,负载再次升高。

Apache生成处理请求的过程:假设您使用的是MPM,您可以按照官方文档对其进行调优。() 访问日志和错误日志可能会帮助您了解发生了什么

问题可能出在其他地方,例如在数据库上:可能它没有经过调优来处理WP生成的负载,以存储调用API时要保存的信息

此外,您可以尝试降低脚本调用api的频率,而不是调优apache/mysql/mariadb/postgreSQL。
您可以尝试降低

,因为您有这么多进程,因为这就是apache被告知的行为方式。提供的@Inc0链接将为您提供一些如何限制使用量的线索。为加快恢复时间,应将MaxSpareserver设置为较低

平均负载达到15

如果您的负载高于CPU线程数,那么内核将开始抢占进程-这意味着您的吞吐量将下降。我真的说不出有多少。但是,如果这是一个一次性的练习,您准备花费多少时间和精力让它运行得更快,而不仅仅是加载数据/降低效率

我运行迁移脚本

这是多线程/使用curl\u multi-*函数吗?我不希望单线程操作会导致如此多的持久负载。你会从mod_状态中得到很多线索。无论如何,您似乎没有在客户端(或在服务器上禁用)中使用keepalive。在两端启用此功能将对负载/性能产生重大影响

我从其他CMS迁移到WordPress

这就是XY问题

Wordpress速度很慢,而且资源很重。你最大的胜利将来自绕过Wordpress并将数据直接写入数据库。第二个最好的方法是使用Wordpress中内置的批量导入功能(它还可以导出数据结构)。作为Wordpress,您还可以使用几个第三方插件(但请在完成导入后卸载该插件)