问题标签 [c10k]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
database - 处理数十亿条信息的存储?
如果我需要一个包含十亿多个对象的数据库并且我需要随时立即(或几乎立即)访问数据库中的任何项目,那么最好的解决方案是什么。
该数据库的查询速度约为每秒 1000 个请求。数据库中的行几乎不相关,因此不需要是关系的。
如果你好奇为什么,那是为了模拟移动元素。
我在想像 Cassandra 的几个负载平衡集群,它们通过 Web 服务器的负载平衡集群访问。
钱是一个因素,所以越便宜越好。对软件或工具没有限制,但它必须是开源的。
只是寻找一种数据库解决方案,它可以很好地处理大量用户的大量数据(根本不需要关系)。
它必须处理冗余和故障。
只是一个让我朝着正确方向前进的高级想法就很好了。
c++ - 对于许多同时连接,我应该使用哪种基于套接字的模型?
我需要知道哪种基于套接字的模型最适合具有许多同时连接的服务器,就像在 MMORPG 服务器中一样。
我已经阅读了有关 c10k 的信息,但是我应该使用什么,例如,如果我的服务器一次只允许 5000 个客户端?阻塞套接字,线程(每个客户端一个线程)?非阻塞套接字,非线程?只在几个线程中处理所有客户端的循环?IOCP?
简而言之,有哪些优点和缺点?我已经用谷歌搜索了,但我没有找到关于所有这些模型的具体“对比”文章。
还是有更简单的方法来处理 c10k 问题?
平台:windows XP
python - 具有非阻塞架构的 Python Web 服务器选项
我正在寻找一个基于 Python 的非阻塞 Web 服务器环境,该环境旨在处理大量同时连接并在重负载 ( C10K ) 下做出响应。我需要它作为我的 web 应用程序的后端。在典型的场景中,webapp 客户端将使用 WebSockets 对服务器进行多次调用。
到目前为止,我在 python 领域找到了 2 个选项。
在 python 之外当然有 node.js,但如果可能的话,我更喜欢 python 编码环境。
您会推荐以上两个(或其他我不知道的)中的哪一个?什么是利弊?或者我应该通过为 web.py 编写一些非阻塞前端来推出自己的框架?
我担心的是,虽然上述两个项目似乎都有很好的社区支持,但它们不像 Django、CherryPy、Pylon 等那样主流。因此我害怕做出将来可能会导致支持不佳的选择。
javascript - 如何通知客户端浏览器有关服务器上的某些事件?
我在服务器端使用python(Tornado),在客户端使用一些javascript。我有一个常见的情况 - 一个用户向另一个用户发送消息。我希望服务器通知客户端的浏览器(消息的接收者)有新消息。我该怎么做?我应该与客户端(可能使用 websocket)还是其他东西建立长期连接?
PS为了通过websocket建立连接,我找到了很好的库TornadIO
PS2 因此,由于建立连接 betwebb 服务器的项目负载很高,每个客户端看起来都很可疑。我怕c10k问题。可能只是缺乏我的知识。
windows - 用于 Windows 的高性能套接字库
我在 POCO 库中看到了一个非常好的套接字库。这使用了适用于 linux 和 windows 系统的“经典”方法,主要是基于 SELECT 的方法。
我想知道是否有特定于使用异步 IO(完成端口?)的 Windows 的东西,因为我想在高性能代理/袜子服务器上使用它。
linux - 在linux中处理c10k
使用linux BSD socket,如果活动连接数超出系统限制会怎样?会接受呼叫返回错误吗?
即使系统可以接受无限的套接字连接,它是否可以超过整数最大值的大小?
套接字描述符是一个 4 字节的整数值。公平地说,在 32 位系统中与单个进程保持超过 4294967295 个活动 TCP 连接在理论上是不可能的吗?(假设硬件和操作系统可以支持这一点。服务质量并不重要。我们只是想保持活动的 TCP 连接)
这可能是一个愚蠢的问题,但我很好奇。
tornado - C10k 在实践中怎么样?
我刚刚测试了一个使用Tornado制作的小型应用程序,但我离10k 同时连接还很远!为了进行测试,我使用了Siege,在OpenSuse 12.2 64 bit下,机器是i7和8GB 以下是结果:
我收到了这个错误:
如果我使用 10k 连接:
我收到一个错误:
linux - C++ 服务器 - 超过 1024 个连接
我有一个 C++ 聊天服务器,在 linux 中运行并使用 libev 库。如果我尝试连接超过 1024 个客户端,它将因 -1 文件描述符而崩溃。
我想允许对服务器进行超过 1024 个并发连接。通过查看 libev 文档,它看起来可以配置为使用 select、poll 和 epoll,尽管我不确定默认值是什么。
任何有关如何使用 libev 增加文件描述符限制的提示或参考将不胜感激!
multithreading - TCP/IP - 使用每个客户端的线程方法解决 C10K
在阅读了著名的C10k 文章并在网络上搜索了自从它编写以来事情是如何演变的之后,我想知道今天的标准服务器是否有可能使用每个连接的线程来处理超过 10000 个并发连接(可能与线程池的帮助以避免创建/终止过程)。
可能会影响解决问题的方法的一些细节:
- 输入、中间处理和输出。
- 每个连接的长度。
- 服务器的技术规格(内核、处理器、RAM 等...)
- 将此系统与 AIO、轮询、绿色线程等替代技术相结合......
显然我不是这方面的专家,所以任何评论或建议都将受到高度赞赏:)
multithreading - 使用 libev 的多线程套接字服务器
我正在实现一个套接字服务器。所有客户端(最多 10k)都应该保持连接。
这是我目前的设计:
- 主线程创建一个事件循环(默认使用 epoll)和一个用于接受客户端的观察者。
- 接受回调
- 接受 fd 并将其设置为非阻塞模式。
- 为 fd 添加监视程序以监视读取事件。
- 读取回调
- 读取数据并将任务添加到线程池以发送响应。
将读取部分移动到线程池是否可以,或者任何其他更好的主意?谢谢。