PHP启动的后端程序无法并发运行- PHP-FPM |阿帕奇 | Python3

发布于 2025-01-13 00:58:55 字数 1038 浏览 0 评论 0原文

我目前正在运行一个带有 php-fpm 7.4.27 和 Apache 的网络服务器。

我正在尝试运行从 php 启动的 python 后端程序,如下所示:

$exechar3 = sprintf('bash -c "exec nohup setsid ./program.py %s %s > /dev/null 2>&1 &"',$var0, $var1);
exec($exechar3);

当他单独运行时,该程序运行并完美结束,如下所示:

ps aux|grep program
www-data 1404374  145  2.6 270989696 854732 ?    Ssl  12:29   0:02 python3 ./program.py var0 var1

但是如果我同时从其他客户端会话启动相同的后端程序,如下所示:

ps aux|grep program
www-data 1404374  145  2.6 270989696 854732 ?    Ssl  12:29   0:02 python3 ./program.py var0 var1
www-data 2064374  145  2.6 270989696 854732 ?    Ssl  12:29   0:02 python3 ./program.py var0 var1

第一个程序不运行没有结束,第二个开始但没有运行...

我的程序是多线程Python脚本,同时触发数千个请求。 问题是,当执行 Python 程序的第一行时,第二个程序上的线程永远不会启动。如果我使用 root shell 同时运行它,那么程序将同时运行。

我认为问题来自 Apache 或 php-fpm 但我没有设法解决问题。

我查看了 php-fpm 线程 &最大子进程、Apache 线程和工人,stdout | in | err重定向,shell管理,特权,但我没有解决问题。

我希望社区能帮助我解决这个问题。

我很活跃,回复也很快。

感谢您的研究。

I am currently running a webserver with php-fpm 7.4.27 and Apache.

I am trying to run python backend program launched from php like this :

$exechar3 = sprintf('bash -c "exec nohup setsid ./program.py %s %s > /dev/null 2>&1 &"',$var0, $var1);
exec($exechar3);

This program run and end perfectly when he's running alone like :

ps aux|grep program
www-data 1404374  145  2.6 270989696 854732 ?    Ssl  12:29   0:02 python3 ./program.py var0 var1

But if I launch the same backend program from an other client session like this at the same time :

ps aux|grep program
www-data 1404374  145  2.6 270989696 854732 ?    Ssl  12:29   0:02 python3 ./program.py var0 var1
www-data 2064374  145  2.6 270989696 854732 ?    Ssl  12:29   0:02 python3 ./program.py var0 var1

The first program don't end, and the second start but is not running...

My program are multithreaded Python script that fire thousand of request at same time.
The problem is that threads on the second program are never starting while the first line of the Python program are executed. If I run it at the same time with a root shell, then programs will concurrently run.

I think the problem comes from Apache or php-fpm but I didn't managed to resolve the problem.

I looked on php-fpm threads & max childrens, Apache threads & workers, stdout|in|err redirection, shell management, privileges, but I didn't solved the problem.

I hope community will help me solve this.

I am very active and I will reply fast.

Thanks for your research.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

夏末的微笑 2025-01-20 00:58:55

最后是POSIX线程的问题!

增加线程限制使我的 python 程序能够运行 900000 个线程,这就足够了!

如何增加 JVM 线程的最大数量(Linux 64 位)

Finally it was a question of POSIX threads !!!

Increasing my threads limits makes my python program able to run 900000 threads and that's enough !

How to increase maximum number of JVM threads (Linux 64bit)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文