没有不值得去解决的问题,也没有不值得去学习的技术!

一个 GraphQL API ,耗时长达 7 秒的排查分析(Windows PHP-FPM 可以同时处理多个请求吗?)

一个 GraphQL API ,耗时长达 7 秒
1、一个 GraphQL API ,耗时长达 7 秒。如图1
一个 GraphQL API ,耗时长达 7 秒
图1
2、在 Laravel Telescope 中查询此请求的时间,1345 ms。如图2
在 Laravel Telescope 中查询此请求的时间,1345 ms
图2
3、不在页面中请求 GraphQL API,而是使用 Altair GraphQL Client 单独请求,耗时 1.87 秒。与在 Laravel Telescope 中的时间大致相当。如图3
不在页面中请求 GraphQL API,而是使用 Altair GraphQL Client 单独请求,耗时 1.87 秒。与在 Laravel Telescope 中的时间大致相当
图3
4、现在的运行环境:Windows 10、Nginx 和 PHP FastCGI。这种环境下受到限制,即一次只能服务一个 HTTP 请求。进而导致 GraphQL API 的等待时间长达 7 秒。 5、现在的 Nginx 配置如下


http {
	## PHP-FPM Servers ##
	upstream php-fpm {
		server 127.0.0.1:9000;
	}

	server {
		location ~ \.php$ {
			# fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
			fastcgi_pass 127.0.0.1:9000;
			fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
			include fastcgi_params;
		}
	}
}


6、参考:https://stackoverflow.com/questions/15819351/can-windows-php-fpm-serve-multiple-simultaneous-requests 。 7、调整 Nginx 配置如下


http {
	## PHP-FPM Servers ##
	upstream php-fpm {
		server 127.0.0.1:9000;
	}

	upstream php_farm {
        server 127.0.0.1:9003 weight=1;
        server 127.0.0.1:9004 weight=1;
        server 127.0.0.1:9005 weight=1;
		server 127.0.0.1:9006 weight=1;
    }

	server {
		location ~ \.php$ {
			# fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
			# fastcgi_pass 127.0.0.1:9000;
			fastcgi_pass php_farm;
			fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
			include fastcgi_params;
		}
	}
}


8、需启动几个 php-cgi 进程并将它们绑定到不同的端口:9003、9004、9005、9006。如图4
需启动几个 php-cgi 进程并将它们绑定到不同的端口:9003、9004、9005、9006
图4
9、重启 Nginx 后。如图5
重启 Nginx 后
图5
10、再次在浏览器中刷新页面,查看 GraphQL API 请求时间。已经缩短至 2 秒左右。符合预期。如图6
再次在浏览器中刷新页面,查看 GraphQL API 请求时间。已经缩短至 2 秒左右。符合预期
图6

需要长期技术维护或远程问题排查?

我是拥有 15+ 年经验的 PHP / Go 后端工程师,长期关注已有系统维护、Bug 修复、性能优化、服务器排查、WordPress 网站维护和小功能迭代。

如果你的项目遇到以下情况,可以先从一次小问题排查开始合作:

  • ✅ PHP / Laravel / Yii2 老项目无人维护
  • ✅ Go / Gin 后端接口需要排查或优化
  • ✅ WordPress 网站访问慢、报错或插件冲突
  • ✅ Nginx / MySQL / Redis / Linux 服务器异常
  • ✅ CDN / Cloudflare / DNS / HTTPS 配置问题
  • ✅ 需要长期远程技术支持或兼职维护

更多介绍请查看:关于我 & 合作

微信:13980074657
邮箱:shuijingwanwq@gmail.com
Telegram:@shuijingwan
GitHub:https://github.com/shuijingwan

评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理