apache2日志如何工作多个实例

apache2是否支持access_log和error_log的同步日志? apache2中的日志如何工作多个实例? 如果多个实例同时写入,它是否会locking条件?

提前致谢。

简而言之,不,Apache本身并不locking文件 – 至less,这是一个性能和资源的打击。 它最多只有一个等待发生的潜在的僵局。 由于在正常的设置上可能有数百个线程正在争夺锁,所以你会看到很多饥饿的事情正在发生。

更复杂的答案是,你当然可以自己尝试和实现这个。 也就是说,你可以使用像pipe道日志这样的东西来传递一个处理locking的中间脚本。

正确的答案是,为什么你需要把这些放在同一个文件? 如果他们托pipe相同的数据,那么他们应该是同一台服务器 – 分成两个单独的监督(即,根拥有的httpd)和多个孩子(即Apache拥有的httpd)不会给你买东西; 如果有的话,启动资源所需的额外资源将会降低性能。 如果他们没有托pipe相同的内容,那么他​​们不应该把事情logging到同一个日志中。

如果您确实需要合并内容,那么可以合并来自两个Apache日志文件的内容 。

希望这可以帮助!

Does apache2 support synchronized log for access_log and error_log?
正如其他人所指出的那样,没有任何locking或机制来确保将条目同步写入任何两个apache日志文件。 然而,事件时间戳的(所以你可以将一个error_log事件与触发它的access_log事件相匹配),如果你想要这样做的话,还有工具来合并日志。

How the log in apache2 works for multiple instances?
有关日志logging的信息 ,请参阅Apache手册部分 ,尤其是虚拟主机上的子部分 。
基本上答案是:“它可以在手册中描述的限制范围内进行configuration。” MrTuttle给你的build议(每个站点使用一个单独的日志,当然单独的日志单独的httpd实例!)是非常好的build议 – 我build议遵循它…

Will it get to lock condition if multiple instances write at the same time?
否(请参阅上文),但在极端负载下,您可能会遇到一些无序写入日志文件的事件。 (我已经看到了这个一次,而该网站使用pipe道日志,所以有可能是处理日志的程序简直失去了它的想法…)

不,你不会得到locking条件。 Apache的日志不打开排他锁(我不知道这是否是在Windows上是真的)。

也就是说,为了您自己的理智,使用单独的日志。

当一个文件描述符在N个进程或线程之间共享时,来自同一实例的多个apache进程可以毫无顾虑地写入相同的日志文件,因为基本的IO API保证这是安全的(不会丢失数据或交错)。