没有数据库交互性的高性能 Web 服务器

Tom*_*Tom 0 optimization performance scalability lighttpd

我准备设置一个服务器,负责跟踪来自大量流量源的统计数据。它将以平均每小时 6-7 百万的速度处理请求,所有这些都是小的 GET。我所需要的只是一个简单的服务器设置,它可以处理 get 请求的参数并将它们写入 CSV 文件。

我的第一个想法是使用 lighttpd+fastcgi+php,因为这是我已经熟悉的配置。但是,鉴于我不能每天都做出这些类型的性能决定,我想探索一些其他选项,看看是否有更好的方法可以达到这个目的。

Joh*_*ton 5

您想每小时对 CSV 文件执行 6-7 百万次写入操作吗?

说真的,数据库是一个更好的主意。数据库旨在处理并发写入,并且可以垂直扩展(更大的机器,更快的磁盘)或水平扩展(负载分布在多个服务器上)。写入单个 CSV 文件(或任何文件)需要某种形式的锁定来处理并发问题,并且随着 IO 负载和并发性的增加,扩展性很差。

要解决这个问题,您可能最终会实现自己的缓存和缓冲层,然后开始在多个文件之间分配负载,等等。从一开始就使用某种类型的数据库,这样可以避免很多麻烦。