thread_pool
`thread_pool` 指令配置了用于在 NGINX 中处理异步请求的线程池。 — NGINX Core
thread_pool
main
语法thread_pool name size [stack_size];
默认值none
上下文main
模块NGINX Core
参数2-3
说明
`thread_pool` 指令用于定义一个线程池,允许 NGINX 将异步请求的处理卸载到线程中,这可以通过更好地利用多核处理器来提高性能。该指令接受两个到三个参数:线程池的名称、线程池的大小,以及可选的线程栈大小参数。参数允许对为使用线程处理并发连接分配的资源进行微调,有助于在服务器资源之间平衡工作负载分配。\n\n当设置了 `thread_pool` 指令时,NGINX 会在池中创建指定数量的线程,这些线程可用于处理 I/O 受限或需要阻塞操作的任务。线程独立于工作进程进行管理,允许高效地处理操作而不会阻塞主事件循环。这在诸如 Lua 脚本、文件上传或其他长时间运行的操作等场景中特别有用,这些操作如果直接在工作进程中处理通常会阻碍性能。可选的栈大小参数定义为每个线程分配的栈内存量,当将执行深度递归或占用大量栈的操作时,这一点尤为重要。\n\n应当谨慎管理线程池的大小和工作进程的数量,因为线程过多可能导致过度的上下文切换、性能收益递减,并最终造成资源耗尽。
配置示例
thread_pool my_pool 32;
⚠
将线程池大小设置得过高会导致频繁的上下文切换,从而降低性能。
⚠
不使用适当的线程同步机制可能导致共享资源出现竞态条件。