今天再看nginx架构发现了它也存在惊群现象,之前师兄的socks5代理服务器同样存在着惊群现象。
惊群(thundering herd)是指,只有一个子进程能获得连接,但所有N个子进程却都被唤醒了,这种情况将使性能受损。
之前看过的socks5代理服务器也是类似,bind-listen后fork多个进程,每个进程单独accept循环,这也是之前性能上不去的一个重要原因,而且随着fork数增多,性能恶化加剧。
解决方法:记得之前看unix网络编程时说在各进程accept前加锁可以避免惊群