繁体   English   中英

执行PHP操作后网站关闭

[英]Website Down After Performing PHP Action

假设我有一个托管在远程服务器上的网站。 我导航到该网站上的页面,并尝试执行特定的操作(如有必要,我可以更详细地介绍其详细信息,但就目前而言,我只是说该操作涉及在服务器上运行带有数据的程序从数据库中获取。)

页面只是不断加载。 因此,我尝试导航到主要网站。 现在,这种情况也持续不断地加载,而无法解决。 大约一天后,该网站又回来了,所以也许有一些自动过程会在一段时间后终止任务。 我的问题是这样的:

我是否可以取消此任务或执行任何操作以使我无需等待一整天即可导航至该网站? 如有必要,我可以详细介绍。

谢谢。

根据要求,一些更深入的信息。

PHP脚本从数据库中检索基于文本的信息。 基于此信息,PHP脚本将调用可执行程序。 可执行文件的输出将输出到屏幕。

我检查了mysql进程列表,发现一个过程耗时特别长。 我杀死了它,所以可能是可执行文件一直在运行。 如果是这样,我将如何确定这一点,如果没有,那么可能会发生什么呢? 谢谢。

解决了 :好的,基本上是Mike Purcell的建议,它是显示mysql进程的进程列表,并杀死我发现花费很长时间的所有进程。 一旦完成,只需重启mysql和httpd。 再次感谢所有发表评论的人。

听起来这种神秘的动作可能导致未优化的查询被执行,这可能导致其他查询挂起,直到不良查询执行完毕。 如果您可以通过终端访问mysql服务器,则可以发出以下命令来终止长时间运行的查询:

mysql> show processlist;

此命令将输出任何当前正在运行的查询。 注意time列,它将以秒为单位显示查询已执行多长时间的时间。 从理论上讲,您绝不可以在几秒钟后运行任何查询,但是某些查询可能要花费10分钟以上的时间,具体取决于查询和所涉及的数据集。 需要注意的另一列是id列,使用此值您可以手动终止查询(就像终止linux计算机上的进程一样)。

mysql> kill 387 # 387 is just an example

现在,当您再次运行show processlist命令时,该查询将从进程列表中消失。

看起来您是DoS建立了自己的网站!

也许该网页不应该是网页,而是手动或通过cron执行的任务? 否则,任何人都可以在需要时找到此页面并杀死您的网站...

如果此程序需要大量资源,则应以某种方式对其进行限制:尝试对其进行优化,尝试限制其所允许的资源(我不知道该怎么做,我只知道有可能:s)

如果问题已经存在,则可以尝试ps aux | grep <processname"该进程( ps aux | grep <processname" ,然后ps aux | grep <processname" kill -9 processid ),或者查询问题是否来自MySQL(在mysql客户端内部, show processis t;然后kill <query n°> )。首先尝试SQL。

如果站点由于密集的MySQL进程而被锁定,或者MySQL进程崩溃,那么您最好的办法就是将进程隔离到自己的数据库线程中,这样普通表就不会被锁定。

另一个选择是将某些数据库从(假设)MyISAM切换到InnoDB引擎(如果可以的话)。 批量插入将变慢,并且性能签名将有所不同,但是,您不会受到如此严格的锁定。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM