首页
学习
活动
专区
工具
TVP
发布

程序员如何估算服务器所需线程数

程序员在搭建服务器的时候会遇到很多的问题,有时服务器崩溃,有时候服务器达不到想要的处理效果。归根结底可能是对服务器所需的线程不是很了解。今天和大家分享一下如何得到理论上的服务器线程池配置。

python编写小工具 estimate_configs 函数估算Java线程池参数配置:

代码

# 估算Java线程池参数配置

def estimate_configs(temp_requests_per_sec, temp_tasks_per_request, temp_task_cost_per_task, temp_task_wait_time):

# 每秒任务数

temp_tasks_per_sec = temp_requests_per_sec * temp_tasks_per_request

# 核心线程数

temp_core_pool_size = temp_tasks_per_sec / (1 / temp_task_cost_per_task)

# 队列容量

temp_queue_capacity = (temp_core_pool_size / temp_task_cost_per_task) * temp_task_wait_time

# 最大线程数 (流量翻倍)

temp_max_pool_size = (2 * temp_tasks_per_sec - temp_queue_capacity) / (1 / temp_task_cost_per_task)return temp_tasks_per_sec, temp_core_pool_size, temp_queue_capacity, temp_max_pool_size

if __name__ == '__main__':

# 每秒请求数 (单位: 个)

requests_per_sec = 100

# 每个请求包含任务数 (单位: 个)

tasks_per_request = 10

# 每个任务花费的时间: task_cost_per_task (单位: s)

task_cost_per_task = 0.1

# 任务在队列中最大等待时间: task_wait_time (单位: s)

task_wait_time = 0.2

# 获取估算Java线程池配置

tasks_per_sec, core_pool_size, queue_capacity, max_pool_size = estimate_configs(requests_per_sec, tasks_per_request, task_cost_per_task, task_wait_time)

print('java thread configuration: '')

print('tasks_per_sec: ', tasks_per_sec)

print('core_pool_size: ', core_pool_size)

print('queue_capacity: ', queue_capacity)

print('max_pool_size: ', max_pool_size)

1. 接口的qps可计算出tasks

2. 最大容忍响应时间推算出等待时间

服务接口最大容忍响应时间 = 请求中任务最大等待时间 + 请求中任务最大执行时间

理论上,可以根据以上函数快速估计出一个项目所需线程池的配置。但是,如果这个时候CPU已100%满载,那么我们就要通过优化代码、升级设备,降低每个任务的耗时来处理了~

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20191209A0DG8K00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券