ssh – 可以在Linux(ext3)上减慢日志写入速度吗?

我想知道tailf是否可以生成阻塞I / O,这会降低因日志记录而导致的服务器响应速度.

对于前者假设以下设置:

Debian 5.1 linux服务器(foo)通过终端管理(foo托管在EC2上).

Foo运行多个应用程序,每个应用程序都写入自己的日志文件.为了举例,Apache httpd到/var/log/apache/access.log& Tomcat 5.5到/var/log/tomcat5.5/myApp.log.

如果我打开到foo的ssh连接,(注意:Internet链接,高延迟,相对较慢的上传)并运行tail -F /var/log/apache/access.log,我无法达到内核阻止httpd的写入的情况因为在每个线程上执行了等待,所以这个日志文件因此减慢了httpd的性能?

为了给出一些数字,让我们假设foo每秒记录大约200kb的日志数据,需要通过网络将其推送到ssh客户端.

另一个理论方面:如果/ var / log文件系统设置在无限大小的ram上(请记住:从理论上说),以便消除硬盘寻道时间会发生什么?

第三个方面,如果我从一个非常慢的链接打开ssh连接会发生什么(让我们假设foo的流量形状只能推送5kb / s上传)?

很想听听你的想法.

谢谢阅读,
格言.

解决方法

我不认为这里会对I / O造成阻碍.当你做“tail -f”时,发生了什么

>你的shell进程,比方说bash,会产生一个新进程’tail’.
> tail将打开文件,将文件指针移动到结尾,等待3秒并检查是否有新数据.
>如果有新数据,tail会使用unix管道将其推回bash.
>这些数据通过bash ssh从服务器传输到您的机器.

正如您所看到的,慢速互联网连接不会影响步骤#2,这无论如何都是I / O性能的关键.

另外,tail以“只读”模式打开文件,并且有根据的猜测,日志以“仅附加”模式打开,因此不必担心这里有太多锁定.如果这仍然是你的一个问题,那么你可能想尝试基于最新的linux inotify api的inotail,以避免轮询文件.

希望这可以帮助,亚历克斯

相关文章

发表回复

您的电子邮箱地址不会被公开。