消息分发服务器优化总结

来源:互联网 发布:朝鲜战争美军被俘知乎 编辑:程序博客网 时间:2024/06/18 12:48

消息分发服务器经过几天的压力测试及优化,已经可以达到单机同时服务70000个用户

 

在压力测试及优化的过程中,遇到了几个问题

 

1.数据库连接过多

由于处理用户发过过来的数据包时采用fork()新进程来处理,没有采用数据库连接池,在大数据量的情况,数据库出现连接过多的情况,

通过Mysql show processlist命令查看,发现有很多未认证连接请求,修改了数据的最大连接数,加大了参数back_log的,使数据库在

同一时间可以处理更多的连接请求。在数据库服务器和消息分发服务器在同一台服务器的情况下,将数据库服务的地址配置为localhost,

这样可以数据的传输不用经过网卡,而是直接的内存拷贝,可以加快消息分发服务器和数据库的连接速度。

 

 

2.Mysql执行效率慢

在数据表比较大的情况下,有些语句的查询明显比较耗时,通过查看mysql服务器的慢日志,将相关的sql语句log出来,

通过explain命令来分析性能,对数据表不合理的索引进行了一些优化

 

 

3.fork()性能开销过大的问题

这个版本的服务暂时不准备改动,在可以满足用户服务的前提下,以服务器稳定为第一原则,准备在下一版本采用共享内存池和进程池相接合的

框架,预先分配一定数目的进程,当收到新的数据包后,将数据包写到共享内存池,进程池中的每个进程竞争令牌,拿到令牌的去共享内存拿任务,

这样也每个进程也可以采用数据库长连接,减少不必要的数据库连接开销。

 

 

 

接下来的一个星期,不断完善服务器的相关功能,设计好服务器的监控程序的接口,由相关的人去实现具体的编码,做到实时监控服务

器的运作情况,在出现问题的情况下通过飞信和邮件来通知相关的负责人,以保证系统能按时上线。

原创粉丝点击