欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 汽车 > 时评 > 高性能系统优化指南

高性能系统优化指南

2025/9/20 19:15:47 来源:https://blog.csdn.net/m0_37242314/article/details/148767168  浏览:    关键词:高性能系统优化指南

本文仅仅谈论从哪些方面进行考虑~~

一、负载均衡层

不同负载均衡技术的性能差异:

  • Nginx:约5万QPS(适合7层负载)

  • LVS(Linux Virtual Server)即Linux虚拟服务器:约80万QPS(4层负载均衡)

  • F5硬件:约200万QPS(企业级硬件负载)

例如
// Nginx配置示例(高并发优化)
worker_processes auto;  # 自动设置为CPU核心数
worker_cpu_affinity auto;  # 自动绑定CPU核心(新版本支持)
worker_rlimit_nofile 100000;  # 每个worker能打开的文件描述符数量

二、应用程序优化

1. 线程池优化

生产环境尽量自定义ThreadPoolExecutor

// 高性能线程池配置
public class HighPerformanceThreadPool {//核心线程数,一直存活private static final int CORE_POOL_SIZE = Runtime.getRuntime().availableProcessors();//最大线程数(当队列满且核心线程都在忙时,会创建新线程直到达到此上限)private static final int MAX_POOL_SIZE = CORE_POOL_SIZE * 2;//工作队列的容量(在核心线程都忙时,新任务会先进入队列而不是创建新线程)private static final int QUEUE_CAPACITY = 1000;//非核心线程的空闲存活时间 (超过核心线程数的线程在空闲超过此时间后会被终止)private static final long KEEP_ALIVE_TIME = 1L;public static ExecutorService createThreadPool() {return new ThreadPoolExecutor(CORE_POOL_SIZE,MAX_POOL_SIZE,KEEP_ALIVE_TIME,TimeUnit.SECONDS,new LinkedBlockingQueue<>(QUEUE_CAPACITY),new ThreadPoolExecutor.CallerRunsPolicy());}
}

2. 异步处理

// CompletableFuture异步处理示例
public CompletableFuture<Result> asyncProcess(Request request) {return CompletableFuture.supplyAsync(() -> {// 耗时操作return processRequest(request);}, HighPerformanceThreadPool.createThreadPool());
}

3.连接池

// HikariCP高性能配置
HikariConfig config = new HikariConfig();
config.setJdbcUrl("jdbc:mysql://localhost:3306/high_perf");
config.setMaximumPoolSize(20);
config.setMinimumIdle(5);
config.setConnectionTimeout(3000);
config.setIdleTimeout(60000);
config.setMaxLifetime(1800000);

4. sql 层面优化

-- 添加复合索引(注意列顺序)
ALTER TABLE orders ADD INDEX idx_customer_status (customer_id, status);-- 使用覆盖索引
SELECT id, name FROM products WHERE category = 'electronics';-- 定期分析索引使用情况
SELECT * FROM sys.schema_unused_indexes;-- 避免 SELECT *
SELECT id, name, price FROM products;-- 优化 IN 查询(大数据集改用 JOIN)
SELECT * FROM users WHERE id IN (SELECT user_id FROM vip_users);-- 分页优化(避免大 offset)
SELECT * FROM orders WHERE id > 10000 ORDER BY id LIMIT 10;

5. JVM优化

 # 高性能JVM参数 -XX:+UseG1GC -Xms4g -Xmx4g -XX:MaxGCPauseMillis=200 -XX:ParallelGCThreads=8 -XX:ConcGCThreads=4

三、数据库层优化

1. 读写分离(ShardingJDBC)

# ShardingJDBC配置示例
spring:shardingsphere:datasource:names: master,slave0,slave1masterslave:load-balance-algorithm-type: round_robinname: msmaster-data-source-name: masterslave-data-source-names: slave0,slave1

2. 分库分表

# 分库分表配置
spring:shardingsphere:sharding:tables:t_order:actual-data-nodes: ds$->{0..1}.t_order_$->{0..15}database-strategy:inline:algorithm-expression: ds$->{order_id % 2}table-strategy:inline:algorithm-expression: t_order_$->{order_id % 16}

3. 数据库配置

例如mysql

innodb_io_capacity=400 //作用:控制后台进程的 I/O 吞吐量

max_connections=500 //最大连接数

四、缓存优化

1.客户端缓存

  • 浏览器缓存:HTTP缓存头控制(Expires, Cache-Control, ETag)

  • APP本地缓存:内存或持久化缓存

  • 实现技术:LocalStorage、IndexedDB、Service Worker

2.反向代理缓存

  • Nginx缓存:proxy_cache模块

  • Varnish:专业HTTP加速器

  • 可缓存完整的HTML页面或API响应

3.应用缓存

// 多级缓存实现示例
public class MultiLevelCache {private final Cache localCache = Caffeine.newBuilder().maximumSize(10_000).expireAfterWrite(1, TimeUnit.MINUTES).build();private final RedisTemplate<String, Object> redisTemplate;public Object get(String key) {// 1. 查本地缓存Object value = localCache.getIfPresent(key);if (value != null) return value;// 2. 查Redisvalue = redisTemplate.opsForValue().get(key);if (value != null) {localCache.put(key, value);return value;}// 3. 查数据库并回填value = queryFromDB(key);if (value != null) {redisTemplate.opsForValue().set(key, value, 10, TimeUnit.MINUTES);localCache.put(key, value);}return value;}
}

4.数据库缓存

# InnoDB 缓冲池(通常分配 50-70% 物理内存)
innodb_buffer_pool_size = 12G
# 排序缓冲和连接缓冲
sort_buffer_size = 4M //作用:用于 ORDER BY 和 GROUP BY 操作
join_buffer_size = 4M //用于无索引 JOIN 操作
tmp_table_size= 32M  //内存临时表的最大大小

五、消息队列

// 批量消费提高吞吐量
@RabbitListener(queues = "high.perf.queue", concurrency = "10-20")
public void batchProcess(List<Message> messages) {messages.forEach(this::processSingleMessage);
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词