java调用python脚本_python脚本估算Java线程池参数配置

今天和大家分享一下如何得到理论上的线程池配置。用python写一个小工具 estimate_configs 函数估算Java线程池参数配置:

63383c061f97bec6c2f81b57a63e3f23.png

代码

# 估算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_sizeif __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: ' 'tasks_per_sec: ', tasks_per_sec, '' 'core_pool_size: ', core_pool_size, '' 'queue_capacity: ', queue_capacity, '' 'max_pool_size: ', max_pool_size, '')

接口的qps可计算出tasks

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

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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值