关于新框架中的常规日志记录、缓存和性能

Posted

技术标签:

【中文标题】关于新框架中的常规日志记录、缓存和性能【英文标题】:About general logging, caching and performance in new framework 【发布时间】:2009-08-30 13:52:31 【问题描述】:

我正在根据 Zend 框架创建一个新的 php 框架。 它将是用于 Web 开发的通用 MVC 框架。 我担心两个方面:

    日志记录: 我应该使用日志记录吗?使用日志记录时是否存在任何实质性的性能问题?

    缓存数据库查询: 我正在缓存来自数据库的一些查询。 我担心缓存用户相关信息。假设有一些与用户相关的信息。比如他们的个人信息等等。 如果我缓存这些数据,每个用户都会在我的数据文件夹中生成一个缓存文件。现在假设在 2 小时的时间内有 10,000 - 20,000 个用户在线。这意味着我的文件夹中将有 20000 个文件。 我的问题是,它会影响我的服务器的性能吗?一个文件夹可以在服务器上拥有多少个文件有上限吗?

【问题讨论】:

【参考方案1】:

不要使用基于文件的缓存。文件系统操作异常缓慢:http://imgur.com/X1Hi1.gif。使用 memcached,与上面的帖子所说的相反,您不需要很多内存,您需要的内存量与您要存储多少内容完全成正比,而且 memcached 可以根据访问频率剔除数据。

【讨论】:

【参考方案2】:

1) 您肯定想要记录,我建议您在http://www.xdebug.org/ 上提供 xdebug。您可以在他们的网站上进一步了解性能开销。 (加上它与 Eclipse 的 PHP 版本很好地集成。)

2) 我不太确定是否要缓存很多用户信息,但 memcache 可能是 php (http://se2.php.net/memcache) 中缓存的更好选择之一。是的,文件数量没有限制,而且您可能也不会超过 32 位文件大小限制 =)

【讨论】:

如果正在使用日志记录。那为什么我不应该使用 Zend_Log 呢?有什么问题吗?【参考方案3】:

缓存是一个真正的问题,从用户/程序员的角度来看它几乎是不可能的。我不会缓存像用户数据这样简单的东西。这已经缓存在数据库中。更多地关注复杂的查询和完整的网页(或部分网页)。

除非你有一个像 *** 这样的页面,我发现很少有方法可以缓存任何你必须努力搜索的内容,并检查你的日志文件,了解用户在你的网站上做了什么,你很快就会看到一些热点。

我不推荐使用 Memcache,除非您的机器上有大量内存 (> 8GB)。如果您放入 16 GB 的 Memcache 服务器,Memcache 效果最佳。

对于较小的站点、硬件和要求,您应该考虑 APC,因为这是一个非常低开销的数据缓存,同时它加快了 php 的执行速度(您不想在没有字节码的情况下运行生产服务器缓存)。

【讨论】:

以上是关于关于新框架中的常规日志记录、缓存和性能的主要内容,如果未能解决你的问题,请参考以下文章

关于c++的glog和spdlog的性能对比

aop 日志统一处理

.NET 6新特性试用 | 自动生成高性能日志记录代码

.NET性能优化-使用SourceGenerator-Logger记录日志

.NET性能优化-使用SourceGenerator-Logger记录日志

redis-缓存设计-记录前一个小时和最新的日志