1.名词解释:达梦数据库中的HJ_BUF_GLOBAL_SIZE
是所有哈希连接操作可用的最大哈希缓冲区大小,单位为兆字节(MB)
2.达梦压测报错:
3.找到达梦数据库安装文件
4.压力测试脚本
import http.client
import multiprocessing
import time
from urllib.parse import urlparse
import json # 新增json模块用于解析响应内容
def send_request(url):
try:
parsed_url = urlparse(url)
if parsed_url.scheme == 'http':
conn = http.client.HTTPConnection(parsed_url.netloc)
else:
conn = http.client.HTTPSConnection(parsed_url.netloc)
conn.request("GET", parsed_url.path)
response = conn.getresponse()
# 读取完整响应内容
response_body = response.read().decode('utf-8')
status_code = response.status
conn.close()
# 尝试解析JSON(针对接口返回的JSON格式)
try:
response_data = json.loads(response_body)
actual_code = response_data.get('code', status_code) # 优先使用业务code
return actual_code == 200 # 只有code=200才算真正成功
except json.JSONDecodeError:
return status_code == 200 # 非JSON响应则 fallback 到HTTP状态码
except Exception as e:
print(f"请求出错: {e}")
return False
def stress_test(url, num_requests):
results = []
for _ in range(num_requests):
start_time = time.time()
is_success = send_request(url) # 现在返回布尔值
end_time = time.time()
elapsed_time = end_time - start_time
results.append((is_success, elapsed_time))
return results
def run_single_stress_test(url, num_requests_per_process, all_results):
results = stress_test(url, num_requests_per_process)
all_results.extend(results)
def run_stress_test(url, num_processes, num_requests_per_process):
processes = []
manager = multiprocessing.Manager()
all_results = manager.list()
for _ in range(num_processes):
p = multiprocessing.Process(target=run_single_stress_test,
args=(url, num_requests_per_process, all_results))
processes.append(p)
p.start()
for p in processes:
p.join()
return all_results
if __name__ == "__main__":
target_url = 'http://127.0.0.1:8088/api/aaaa/project/deptList'
num_processes = 500
num_requests_per_process = 5
try:
print("开始压力测试...")
results = run_stress_test(target_url, num_processes, num_requests_per_process)
# 结果分析(现在基于布尔值判断)
total_requests = len(results)
successful_requests = sum(1 for success, _ in results if success)
success_rate = (successful_requests / total_requests) * 100
total_time = sum(elapsed for _, elapsed in results)
print("\n===== 测试结果 =====")
print(f"总请求数: {total_requests}")
print(f"成功请求数: {successful_requests}")
print(f"成功率: {success_rate:.2f}%")
print(f"总耗时: {total_time:.2f} 秒")
print(f"平均响应时间: {total_time / total_requests:.2f} 秒")
# 输出详细错误信息(如果有失败请求)
if successful_requests < total_requests:
failed = total_requests - successful_requests
print(f"\n警告: 有 {failed} 次请求未返回code=200!")
except Exception as e:
print(f"发生致命错误: {e}")