小编Ser*_*kov的帖子

Linux 最大线程数

我的服务器一直在运行 Amazon Ec2 linux。我里面有一个 mongodb 服务器。mongodb 服务器一直在高负载下运行,不幸的是,我遇到了问题:/

众所周知,mongodb 为每个客户端连接创建新线程,这在以前工作得很好。我不知道为什么,但是 MongoDB 作为非特权用户(它在 mongod 用户下运行)不能在主机上创建超过 975 个连接。但是当我以 root 用户身份运行它时,它最多可以处理 20000 个连接(mongodb 内部限制)。但是,进一步的调查表明,问题不是 MongoDB 服务器,而是 linux 本身。

我找到了一个简单的程序,它检查最大连接数:

/* compile with:   gcc -lpthread -o thread-limit thread-limit.c */
/* originally from: http://www.volano.com/linuxnotes.html */

#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <pthread.h>
#include <string.h>

#define MAX_THREADS 100000
#define PTHREAD_STACK_MIN 1*1024*1024*1024
int i;

void run(void) {
  sleep(60 * 60);
}

int main(int argc, char *argv[]) {
  int rc = 0;
  pthread_t thread[MAX_THREADS];
  pthread_attr_t thread_attr;

  pthread_attr_init(&thread_attr);
  pthread_attr_setstacksize(&thread_attr, …
Run Code Online (Sandbox Code Playgroud)

linux multithreading

8
推荐指数
1
解决办法
3万
查看次数

标签 统计

linux ×1

multithreading ×1