一、系统基础优化:提升消息处理的底层支撑
/etc/sysctl.conf文件优化内核参数,例如启用TCP Fast Open(net.ipv4.tcp_fastopen = 3)、调整TCP拥塞控制算法(net.ipv4.tcp_congestion_control = cubic)、增大网络缓冲区(net.core.rmem_max = 16777216、net.core.wmem_max = 16777216),提升网络传输效率和系统资源利用率。修改后执行sysctl -p使配置生效。/etc/security/limits.conf文件,增加进程可打开的最大文件数(如* soft nofile 65536、* hard nofile 65536)和最大用户进程数(如* soft nproc 4096、* hard nproc 4096),避免因资源耗尽导致消息处理中断。systemctl list-unit-files --type=service列出所有服务,关闭未使用的服务(如telnet、cups),减少系统负载和潜在安全风险。二、消息队列选择与配置:适配业务的高可用设计
2×节点数),提升并行处理能力;调整server.properties中的num.network.threads(建议8)、num.io.threads(建议16),优化网络和I/O处理效率。channel.queueDeclare("queueName", true, false, false, null)),避免服务重启丢失消息;调整prefetch_count(如100~300),平衡消费者内存压力与吞吐量,防止消息堆积触发流控。三、持久化与可靠性:保障消息不丢失
deliveryMode = 2),非关键消息(如日志)设置为非持久化(deliveryMode = 1),平衡性能与可靠性。channel.basicAck批量调用、Kafka的enable.auto.commit = true),减少确认消息的网络开销,提升处理效率。rabbitmqctl set_policy ha-critical "^critical\." '{"ha-mode":"exactly","ha-params":2,"ha-sync-mode":"automatic"}'设置镜像队列,Kafka通过replication.factor=3设置副本,确保节点故障时消息不丢失。四、监控与运维:提前发现问题,快速响应
ipcs -q查看消息队列状态(队列ID、消息数),ipcs -m查看共享内存状态,journalctl -u rabbitmq-server -f实时查看RabbitMQ日志,及时发现阻塞或异常。logrotate工具自动分割/var/log/messages等日志文件(如每天分割、保留7天),避免日志过大占用磁盘空间,影响系统稳定性。