---
title: 调整线程并发数
description: "程序从单线程变为多线程时，CPU和内存资源得到充分利用，性能得到提升。但是系统的性能并不会随着线程数的增长而线性提升，因为随着线程数量的增加，线程之间的调度、上下文切换、关键资源和锁的竞争也会带来很大开销。当资源的竞争比较严重时，甚至会导致性能明显下降。以下数据为某业务场景下，不同并发线程数下的TPS，数据显示并发线程数达到128后，性能达到高峰，随后开始下降。需要针对不同的业务模型和使用场景做多组测试，找到适合本业务场景的最佳并发线程数。"
url: https://www.hikunpeng.com/document/detail/zh/perftuning/tuningtip/kunpengtuning_12_0013.html
sourcePath: /source/zh/perftuning/tuningtip/kunpengtuning_12_0013.html
indexId: f5ad6bff335840bfbdf7e9c4b52b4759c2f0bd92aa6f0bcca6c8a5b6579cb5a558
---
# 调整线程并发数

#### 原理

程序从单线程变为多线程时，CPU和内存资源得到充分利用，性能得到提升。但是系统的性能并不会随着线程数的增长而线性提升，因为随着线程数量的增加，线程之间的调度、上下文切换、关键资源和锁的竞争也会带来很大开销。当资源的竞争比较严重时，甚至会导致性能明显下降。以下数据为某业务场景下，不同并发线程数下的TPS，数据显示并发线程数达到128后，性能达到高峰，随后开始下降。需要针对不同的业务模型和使用场景做多组测试，找到适合本业务场景的最佳并发线程数。


#### 修改方式

不同的软件有不同的配置，需要根据代码实现来修改，这里举例几个常用开源软件的修改方法：

- MySQL可以通过innodb_thread_concurrency设置工作线程的最大并发数。
- Nginx可以通过worker_processes参数设置进程数量。
