最近我的Apache服务器的CPU已达到100%(全天,即)。我想我已经找到了我的问题。
在页面上,用户可以单击按钮并向我服务器上的PHP文件发送POST请求。有时PHP文件需要很长时间(我的意思是非常长)才能回复,或者有时根本没有回复:
function buttonFunction() {
$.post("http://ipaddress/core/file.php",{username:username, password:pword, coins:coins}, function(data) {
// Stuff
});
}
假设1:
我相信有时人们可能会再次单击此按钮(当它仍在尝试从前一次点击中获取file.php
的结果/响应时),因此在Apache服务器上导致两个来自PHP的同时进程 - 导致更高的CPU使用率(我认为发生了什么事情,如果我错了,请纠正我,因为我对这个服务器的东西不熟悉)。
假设2:
可能导致高CPU使用率的另一件事(我相信)是用户在仍在尝试从file.php
获取结果/响应时刷新页面。 12秒后(没有响应/结果),我会显示一条消息"如果这需要太长时间,请刷新。"在这种情况下(在刷新页面之后),用户再次尝试向file.php
发送帖子请求,而旧的可能仍在运行 - 导致更高的CPU使用率(再次,我认为< / em>发生了什么,如果我错了,请纠正我,因为我对这个服务器的新手很不错。)
推理:
我这样说是因为在我的网站上可能会说只有12个人在线(可能有12个人发送帖子请求),但是当我在PuTTY上运行top
命令时当前正在运行的进程是什么,它显示了近30-40个进程正在运行(有些进程只需 17分钟)。
那么,有没有办法让我可以在刷新时中断请求(如果它还在继续)或点击按钮(再次,如果请求仍在继续)? 事实上,如果我的假设(特别是假设2)是正确的,那么有人可以确认或否认 - 如果那些实际导致高CPU的话吗?此外,如果有人想要更高效的方式我可以解决这个问题(发送这些请求),我们将非常感激。
修改1:
我可以解决我的第一个假设中陈述的可能问题。但是,如果我的第二个假设是真的/有效的话,有人可以确认还是否认?