假设我在远程服务器上托管了一个网站。我导航到这个网站上的一个页面并尝试执行一个特定的操作(如果有必要,我可以深入了解其中的详细信息,但暂时让我说这个操作涉及在服务器上运行带有数据的程序从数据库中获得。)
页面不断加载。所以,我尝试导航到主网站。现在不断加载也没有决心。大约一天后,网站回来了,所以也许有一些自动化过程会在一段时间过后杀死任务。我的问题是:
我是否可以终止此任务或执行任何操作以允许我在不等一整天的情况下导航到网站?如有必要,我可以详细介绍。
感谢。
根据要求,提供更深入的信息。
PHP脚本从数据库中检索基于文本的信息。根据此信息,PHP脚本调用可执行程序。可执行文件的输出将输出到屏幕。
我检查了mysql进程列表,发现了一个耗时特别长的进程。我杀了它,因此可执行文件可能会不断运行。如果是这样,我将如何确定这一点,如果没有,那么它可能还有什么呢?谢谢。
解决: 好吧,所以基本上Mike Purcell的建议是显示mysql进程的进程列表并杀死我看到的那些需要相当长时间的任何进程。一旦完成,只需重新启动mysql和httpd。再次感谢所有评论的人。
答案 0 :(得分:4)
听起来神秘的操作可能导致执行未优化的查询,这可能导致其他查询挂起,直到错误的查询执行完毕。如果您可以通过终端访问mysql服务器,则可以发出以下命令来终止长时间运行的查询:
mysql> show processlist;
此命令将输出当前正在运行的任何查询。注意time
列,这将显示查询执行的时间(以秒为单位)。理论上,您不应该在几秒钟内运行任何查询,但某些查询可能需要超过10分钟,具体取决于查询和所涉及的数据集。另一个要注意的是id
列,使用此值可以手动终止查询(就像在linux机器上终止进程一样)。
mysql> kill 387 # 387 is just an example
现在,当您再次运行show processlist
命令时,该查询应从进程列表中消失。
答案 1 :(得分:2)
看起来你自己做了自己的网站!
也许这个网页不应该是网页,而是手动或通过cron执行的任务?否则,任何人都可以找到这个页面并在他们想要的时候杀死你的网站......
如果这个程序需要这么多资源,你应该以某种方式限制它:尝试优化它,尝试限制允许的资源(我不知道该怎么做,我只知道它是可能的:s)< / p>
如果问题已在此处,您可以尝试终止进程(ps aux | grep <processname"
,然后kill -9 processid
),或查询问题是否来自MySQL(在mysql客户端内部,{{1然后show processis
)。首先尝试SQL。
答案 2 :(得分:2)
如果站点由于密集的MySQL进程而被锁定,或者MySQL进程变得流氓,那么你可以做的最好的事情是将进程隔离到自己的数据库线程,这样普通的表就不会被锁定。
其他选项是将一些数据库从(假设)MyISAM切换到InnoDB引擎,如果可以的话。批量插入速度较慢,性能特征会有所不同,但是,您不会受到如此严重的锁定。