首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何找出哪个PHP应用程序/页面正在运行?

如何找出哪个PHP应用程序/页面正在运行?
EN

Server Fault用户
提问于 2011-09-09 03:59:38
回答 2查看 148关注 0票数 1

我有三个web服务器,使用nginx作为前端,php作为后端。

我们使用DNS循环来分配负载。在这个服务器中,我们有几个PHP应用程序,每个应用程序都存储在自己的文件夹中。

我们有大量的潜在用户(员工人数约20000人)。

每个应用程序由不同的团队维护,因此可能使用不同的PHP框架。当其中一个应用程序有一个写得不好的页面时,php-cgi实例可能会被卡住。当足够多的人访问“坏”页面时,整个三台服务器都会被卡住。

是否有一种机制来确定哪个PHP应用程序有坏的页面问题?

如果我能够确定哪个php页面是由php进程运行的,我就可以确定该页面属于哪个应用程序,并且我可以关闭这个有问题的应用程序,而不是看着整个系统崩溃。

问题是,我还没有找到如何监控哪个页面正在运行(而且仍然被卡住)。如果只有一个应用程序,我可以更改它,我会插入日志语句开始和结束的前端控制器。有6个以上的应用程序使得这种方法不再实用。

EN

回答 2

Server Fault用户

发布于 2011-09-09 04:57:27

如果每个应用程序使用不同的虚拟主机名,

只需确保每个虚拟主机都有一个日志文件

此外,您还可以使用URL路径

代码语言:javascript
复制
SetEnvIf Request_URI /SOME_PATH_1 apps_1
SetEnvIf Request_URI /SOME_PATH_2 apps_2

CustomLog logs/apps_1.log env=apps_1
CustomLog logs/apps_2.log env=apps_2

必须有一些全局环境变量唯一地标识每个应用程序。。

此外,您还可以考虑设置较低的脚本超时。

将每个apache请求的处理时间附加到日志文件中也会有帮助。

票数 1
EN

Server Fault用户

发布于 2011-09-12 06:58:05

这里有个可能有用的东西。在所有站点上的每个PHP文件的顶部,包括一行代码,将"SITE1_ERROR“写入一个一行长的文本文件,所有三个站点扫描都指向服务器上。

在每个PHP文件的底部,编写一行代码,写入同一个文本文件,并用“SITE1_WORKING”覆盖“SITE1_WORKING”。

然后,由于PHP页面是自上而下处理的,如果页面从未完成处理(由于错误),至少将更新文本文件以显示哪个站点有错误。如果根本没有问题,文本文件应该始终读"SITEX_WORKING“,其中X是站点的唯一标识符#。

也许有比这更好的方法,但为什么不给它一个节目呢?最糟糕的情况是,每次成功的PHP页面调用都要写入文本文件两次。如果同时读取/写入一行文本文件是一个问题,或者太浪费硬件负担/浪费时间,那么,只要所有三个站点都能共享相同的DB表,MySQL表记录更新或其他什么东西就会更高效。

票数 0
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/310346

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档