我目前完成了一个 Web 服务器的构建,它的主要职责是简单地将每个 http post 请求中的正文数据的内容写入日志文件。发布数据的内容在收到时会被混淆。所以我不混淆发布数据并将其写入服务器上的日志文件。混淆后的内容是一系列随机键值对,每个请求之间都不同。它不是固定数据。
该服务器正在运行具有 2.6+ 内核的 Linux。服务器配置为处理大量流量(打开文件限制为 32k 等)。该应用程序是使用 web.py 框架用 Python 编写的。http 服务器是 Nginx 后面的 Gunicorn。
在使用 Apache Benchmark 进行一些负载测试后,我注意到它每秒可以处理大约 600-700 个请求,而不会出现任何日志写入问题。Linux 本身在缓冲方面做得很好。当每秒尝试写入同一文件的请求数超过此数量时,就会出现问题。数据不会被写入,信息会丢失。我知道“直接写入文件”设计可能从一开始就不是正确的解决方案。
所以我想知道是否有人可以提出一个我可以快速实施的解决方案,而无需更改太多可以克服这个问题的基础设施和代码?
我已经阅读过 Redis 等内存存储,但我意识到如果在服务器故障期间数据位于内存中,那么该数据就会丢失。我在文档中读到 redis 可以配置为持久存储,只需要服务器上有足够的内存供 Redis 执行。这个解决方案意味着我必须编写一个脚本,以一定的时间间隔将数据从 Redis(内存)转储到日志文件。
我想知道是否有更快的解决方案?任何帮助将不胜感激!