了解“顶级”用户

我正在LAMP堆栈上运行一个网站,并且是pipe理服务器的新手。 当我运行命令顶部时,它列出名为nobody的几个用户访问命令httpd。 这是否与我网站上目前的访客人数相符?

如果是这样,有时我有20或30个“没有人”进入我的网站,每个人都占据了我的记忆的一定百分比。 随着交通量的增加,我会增加我的记忆力,但还有其他方法解决这个问题吗? (我知道这是一个广泛的问题,但我需要一些一般的build议)

谢谢

不,top代表“进程表”,并会列出机器上的进程(运行,hibernate,等待I / O或其他)。 使用典型的LAMP设置,您将有几个进程等待,接受连接,处理请求并返回到某种空闲状态。 因此,与“活跃用户”的数量没有直接关系。

为了正确分析你的Apache服务器的负载,你应该使用你的apache写入的日志(通常是/ var / log / apache,检查你的configuration)。

了解正在发生的事情的起点可能是apache文档 ,以及顶部的系统手册(man top)。 你可以使用mod_status获得关于你的Apache httpd目前正在做什么的详细信息,但是要确保你使用一个好的密码来保护状态URL。

目前为止没有人回答你关于“nobody”用户的问题。

当顶部列出用户名'nobody'时,根本不知道哪个用户login到你的网站。

顶部不知道,不关心,并且无法访问您的网站或用户帐户的详细信息。 top显示有关运行unix进程的详细信息,包括每个进程运行的unix用户标识(uid)。

即top中提到的'nobody'是运行apache进程的Unix用户。

大概你的系统被configuration为以nobody用户身份运行apache,因为这是一个最小的priviledge帐户,即使有人设法破坏apache程序,也不能做太多的事情。 这很正常。 有些系统以用户“apache”,“httpd”,“www-data”或其他一些用户名运行apache,但将其运行为“nobody”没有问题……它只是系统上的另一个unix用户。

除非你使用的是suexec或者类似的方式,否则所有的apache进程都会以'nobody'的方式运行,而不pipe谁在你的网站上login。 既然你问谁是没有用户的问题,我想可以猜测你没有运行suexec。

总结:这不是一个问题,不需要解决。

Web服务器通过分离子httpd进程来处理传入的连接。 这些“额外的”进程将坐在等待传入的连接,所以没有延迟…换句话说,有空闲的进程等待处理传入的连接请求。

如果你查看apache的configuration文件,你会看到一个设置来控制有多less备用subprocess应该等待。

当这些进程开始处理新的连接时,如果他们都忙于更多的httpd进程产生。

尽pipe如此,他们并不都是为了记忆。 这是误导,因为有些内存正在其他进程之间共享。

在/ var / log(可能是/ var / log / http,/ var / log / httpd或/ var / log / apache或/ var / log / apache2)中监视日志文件。 这列出了所有传入的请求。

您可以使用tail -f /var/log//access.log实时监控; 使用control-c打破它。