面试题答案
一键面试bossGroup线程数设置依据
- 网络连接数:若系统预计会有大量的客户端连接,bossGroup线程数可适当增加。一般来说,如果服务器主要处理短连接,每个boss线程可以处理较多连接;而对于长连接,由于每个连接占用资源时间长,线程数不宜过多。
- 服务器硬件:多核CPU可以充分利用多核优势,适当增加bossGroup线程数,如CPU核心数的1 - 2倍。但要注意,过多线程会增加上下文切换开销。
workerGroup线程数设置依据
- I/O操作类型:若I/O操作以读操作为主,且数据量较大,线程数可适当增加,因为读操作可能会有较多等待时间,增加线程可以提高并发处理能力;若以写操作为主,且写操作耗时较短,线程数可不需设置过高。
- 业务逻辑复杂度:如果业务逻辑处理复杂,占用CPU时间长,过多的worker线程可能会导致CPU资源竞争激烈,此时线程数应根据CPU核心数进行调整,一般为CPU核心数 * N(N为根据业务调整的系数,如1 - 2倍)。
- 预估并发量:根据系统预计承载的并发连接数和处理任务量来设置,保证每个线程可以合理地处理一定数量的连接和任务。
参数设置不当导致的性能问题
- bossGroup线程数设置过少:会导致新连接处理速度慢,出现连接堆积,影响客户端连接的响应时间,降低系统整体吞吐量。
- bossGroup线程数设置过多:会增加线程上下文切换开销,占用过多系统资源,降低系统性能,同时可能会导致网络资源竞争,反而影响连接处理效率。
- workerGroup线程数设置过少:会使I/O操作和业务处理排队等待,任务处理延迟增加,系统吞吐量下降,无法充分利用系统资源。
- workerGroup线程数设置过多:会导致CPU资源竞争激烈,上下文切换频繁,消耗大量系统资源,且可能会因为线程争用共享资源而出现死锁等问题,严重影响系统性能和稳定性。