windows - 我应该使用什么网络服务器/mod/技术来为内存中的所有内容提供服务?

标签 windows unix optimization webserver lookup-tables

我有很多查找表,我将从中生成我的网络响应。

我认为带有 Asp.net 的 IIS 使我能够在内存中保留静态查找表,我可以使用它来非常快速地提供我的响应。

但是,是否也有非 .net 解决方案可以做同样的事情?

我看过 fastcgi,但我认为这会启动 X 个进程,其中任何人都可以处理 Y 个请求。但是根据定义,这些过程是相互隔离的。我可以将 fastcgi 配置为仅使用 1 个进程,但这对可扩展性有影响吗?

任何使用 PHP 或任何其他解释语言的东西都不会飞,因为它也是 cgi 或 fastcgi 绑定(bind)对吗?

我知道 memcache 可能是一个选项,尽管这需要另一个(本地)套接字连接,我宁愿避免这种连接,因为内存中的所有内容都会快得多。

该解决方案可以在 WIndows 或 Unix 下工作...没关系。唯一重要的是会有很多请求(现在是 100 个/秒,一年后会增长到 500 个/秒),我想减少处理它所需的网络服务器数量。

当前的解决方案是使用 PHP 和内存缓存(偶尔会命中 SQL 服务器后端)完成的。尽管速度很快(对于 php 而言),但当超过 50/秒时,Apache 确实存在问题。

我对这个问题悬赏了,因为我没有看到足够多的回答来做出明智的选择。

目前我正在考虑使用 C(++) 的 Asp.net 或 fastcgi。

最佳答案

听起来您应该使用像 Redis 这样的内存中键值数据存储,如果你打算在未来拥有多个网络服务器,那么你绝对应该使用集中式内存存储。 Redis 在这种情况下特别理想,因为它支持高级数据结构,如列表、集合和有序集合。它也非常快,它可以在入门级 Linux 机器中获得 110000 个 SET/秒,81000 个 GET/秒。 Check the benchmarks .如果你沿着那条路走,我有一个 c# redis client可以简化访问。

为了使用共享内存,您需要一个在同一进程中“始终运行”的应用程序服务器。在这些情况下,您可以使用静态类或共享的“应用程序”缓存。最流行的“应用程序服务器”是任何 Java servlet 容器(例如 Tomcat)或 ASP.NET。

现在转向访问内存而不是磁盘将产生显着的性能节省,如果这个性能对你很重要,我认为你不想考虑使用解释型语言。在处理请求、网络 IO、解析协议(protocol)设置工作线程等时总会有开销。与内存中的内存相比,决定使用进程外(在同一主机上)共享内存存储可以忽略不计与完成请求所需的总时间进行比较。

关于windows - 我应该使用什么网络服务器/mod/技术来为内存中的所有内容提供服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2294898/

相关文章:

python - 改进使用笛卡尔积的算法

algorithm - CFG算法中的局部搜索

java - 使用 Java 在 Windows 中获取唯一文件 ID?

windows - 如何从 git-svn 将不同大小写的重复文件放入存储库中恢复?

c++ - 如何设置 Vim 以使用 Visual Studio 2010 的 C++ 编译器进行编译?

windows - Powershell 在 windows 和 unix 中正确生成文件路径

在 Linux 上使用 MinGW 为 Windows 编译 Gnu11

python - 需要编写一个 bash 脚本来 ssh 到许多 UNIX 机器上,运行一个 python 脚本并将结果推送到 GitHub

regex - 外壳脚本 : search and replace over multiple lines

r - R中具有等式和不等式约束的二次优化