nginx的惊群现象的理解:       首先一定要明确:锁只能保证不让所有的进程去调用accept函数,解决了很多进程调用accept返回错误,锁解决的是惊群现象的错误,并不是解决了惊群现象!       不引入锁的话:主进程首先调用listen创建监听TCP套接字,进行监听,接着调用epoll_create创建一个epfd和对应的红黑树,然后调用fork创建多进程,子进程内部调用epoll_wait等待同一个epfd的事件,当有TCP连接请求到达时,也就是这个epfd有事件发生时,这些子进程全部被唤醒并处理事件,只有一个子进程通过调用非阻塞accept抢占到该连接请求并创建TCP连接,然后进行handle。       锁是如何解决不让所有的进程调用accept函数呢?首先看这把锁,它叫ngx_accept_mutex;       因为nginx的进程都是主进程fork来的,所以它们都会把监听套接字加入到自己的epoll_wait时间表中,这时候抢到锁的进程继续等待监听套接字上有事件发生,而没抢到锁的进程则会将监听套接字从时间表里边删除;这样一个监听套接字只有一个accept去执行。       还有一种简单的负载均衡小优化:连接数>最大连接数*7/8的时候,它不会去参加抢锁;