java調用python腳本_python腳本估算Java線程池參數配置

 2023-12-25 阅读 31 评论 0

摘要:今天和大家分享一下如何得到理論上的線程池配置。用python寫一個小工具 estimate_configs 函數估算Java線程池參數配置:代碼# 估算Java線程池參數配置def estimate_configs(temp_requests_per_sec, temp_tasks_per_request, temp_task_cost_per_task, temp_task_wait_t

今天和大家分享一下如何得到理論上的線程池配置。用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%滿載,那么我們就要通過優化代碼、升級設備,降低每個任務的耗時來處理了~

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/1/194636.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息