我使用Amazon服务器小实例,默认情况下,它允许每个进程执行382个线程。但是,我希望在一个进程中运行10,000个线程。最近,我了解到这可以通过减少堆栈限制或增加虚拟内存来实现。
据我所知,可以通过增加Linux中的RAM或交换空间来增加虚拟内存。增加RAM不是一种选择。我知道如何增加交换空间,但我不确定我应该选择的最佳尺寸是什么。
我不清楚的是,当我运行线程时,交换空间和RAM是如何工作的?在交换内存使线程慢下来之后,是否有特定的限制?是否应该使用最佳的交换空间?:
发布于 2012-02-10 15:39:00
在正常情况下,系统管理员使用1x或2x内存进行交换。在你的情况下,我不知道这是否适用,甚至足够。
如果不提供运行内容的详细信息,就很难知道什么是合适的交换站点,但通常情况下,如果将其换到磁盘上,则会导致性能下降,从而使运行时间增加数量级。因此,在您投入10k线程之前,您应该看看应用程序的配置或设计,然后做一些其他的事情,这些线程可能会被疯狂地交换。
因此,分析您的应用程序并确定活动并发线程的数量,也许您不需要运行这么多。
请求的
当您建立到网站或When服务器的连接时,您将维护发送到该特定连接的请求列表,因为响应将按顺序接收。当线程向服务器发送请求后,您将在select()循环中等待数据可用。当发生这种情况时,您将接收数据并将请求信息和接收到的数据向下发送到另一个线程进行处理。
https://unix.stackexchange.com/questions/31387
复制相似问题