【问题标题】:Log web based application记录基于 Web 的应用程序
【发布时间】:2009-06-18 07:11:03
【问题描述】:

我正在开发一种网络应用程序,最近需要在其中记录一些用户活动。因此,自然而然的问题是,为此使用 Apache 服务器日志记录机制是个好主意吗?如果答案是肯定的,请解释原因,如果不是,请解释原因。我主要担心的是在 Apache 中启用日志记录会导致性能下降。另外,构建日志机制以便能够在基于 Web 的应用程序中跟踪客户端活动的最佳实践是什么?

【问题讨论】:

  • 嗨@artem,你最后是怎么实现日志机制的。你把所有的日志都拉到数据库来监控用户活动了吗?

标签: apache logging


【解决方案1】:

正如 MaxVT 所说,日志记录的开销极不可能影响性能。 Web 应用程序中网络延迟的开销通常远大于单个磁盘写入,可能在个位数微秒范围内。

通常,基于 Web 的应用程序应该始终开启某种形式的日志记录,而 Apache 中基于 mod_logger 的日志是一种非常便宜的实现方式。

【讨论】:

    【解决方案2】:

    Apache 只是简单地将文本附加到日志文件中——它不会对性能造成太大影响。此外,您很有可能已经启用了日志,因为这是安装在网络主机上的大多数统计数据包的工作方式(与基于网络的 Google Analytics 等不同)

    如果您只有一台服务器,我会选择单独的日志文件。我喜欢将应用程序日志与 Web 服务器日志分开,因为这样更容易找到相关记录。

    如果您有多个服务器并希望拥有一个公共日志,您可能需要查看 syslogd 等。将日志数据从您的应用服务器发送到单个日志记录机器。

    在数据库中保留日志也是可能的,但可能会导致数据库服务器的负载过重,尤其是在您的应用程序已经依赖缓存来保持数据库负载较低的情况下。

    【讨论】:

    • Right Apache 只是简单地将文本附加到日志文件中,对我来说这是开销,因为涉及磁盘 IO,并且对于大量用户而言,它可能会降低服务器性能,不是吗?
    【解决方案3】:

    虽然 apache 日志记录的性能非常低,但您需要考虑日志的用途:

    1. 用户能否看到“我的日志”?
    2. 是否需要根据日志“回滚”?
    3. 您记录的操作类型是否有相关数据?

    这些问题可以引导您选择 apache 日志记录或基于 DBMS 的自定义日志记录。

    使用自定义日志记录,您可以轻松构建事务日志,只需单击一下即可帮助您将整个系统从一种状态恢复到另一种状态。

    jrh

    【讨论】:

      猜你喜欢
      • 2012-09-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-17
      • 2010-10-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多