Max*_*ler 5 performance ssh logging performance-tuning network-traffic
我想知道 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 上传)?
很想听听你们的想法。
感谢阅读,马克西姆。
小智 3
我认为这里不会出现 I/O 阻塞。当你执行“tail -f”时,发生的事情是
正如您所看到的,缓慢的互联网连接不会影响步骤 #2,无论如何,这都是 I/O 性能的关键。
另外,tail 以“只读”模式打开文件,并且有根据的猜测,日志以“仅附加”模式打开,因此这里不应该有太多锁定需要担心。如果这对你来说仍然有点担心,那么你可能想尝试一下基于最新的 linux inotify api 的inotail以避免轮询文件。
希望这有帮助,亚历克斯