🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 同步阻塞与异步非阻塞适用场景 [TOC] ## 异步的优势 * 高并发,同步阻塞IO模型的并发能力依赖于进程/线程数量,例如`php-fpm`开启了200个进程,理论上最大支持的并发能力为200。如果每个请求平均需要100ms,那么应用程序就可以提供2000qps。异步非阻塞的并发能力几乎是无限的,可以发起或维持大量并发TCP连接 * 无IO等待,同步模型无法解决`IOWait`很高的场景,如上述例子每个请求平均要10s,那么应用程序就只能提供20qps了。而异步程序不存在IO等待,所以无论请求要花费多长时间,对整个程序的处理能力没有任何影响 ## 同步的优势 * 编码简单,同步模式编写/调试程序更轻松 * 可控性好,同步模式的程序具有良好的过载保护机制,如在下面的情况异步程序就会出问题 * Accept保护,同步模式下一个TCP服务器最大能接受`进程数+Backlog`个TCP连接。一旦超过此数量,Server将无法再接受连接,客户端会连接失败。避免服务器Accept太多连接,导致请求堆积