免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2118 | 回复: 6
打印 上一主题 下一主题

如何优化多slave的连接程序 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2008-10-09 17:57 |只看该作者 |倒序浏览
公司db采用m/多slave方式。现有的数据连接类连接的方式是这样做的:根据现有slave列表随机生成一个slave编号,然后去连接这个slave,如果连接的slave当机或因为其他原因连接不上的话,就自动连接下一个。
    这样做存在这么几个问题:
    1、不能很好地实现slave db的负载匀衡
    2、slave当机了时的连接处理方式效率不高。
本人想了好久没有一个好的思路,各位高手指点一下,给个思路. 先谢了

论坛徽章:
0
2 [报告]
发表于 2008-10-10 09:02 |只看该作者

回复 #1 masin_pan 的帖子

加个中间层的数据库连接池,保证连接的有效性,负载均衡也可以在这一层上处理

论坛徽章:
0
3 [报告]
发表于 2008-10-10 09:34 |只看该作者
谢谢meizhe1981的回复
我考虑过这个问题,中间连接池是不是这样的:连接池记录各slave的状态及连接数。当slave有连接和断开时,就更新连接池中的连接数。这样就能有效匀衡各slave的负载。但如何知道slave的连接状态?用后台程序定期连接slave并更新连接池中slave状态?

论坛徽章:
0
4 [报告]
发表于 2008-10-10 15:40 |只看该作者
简单的做法
1. 用遍历的方式访问SLAVE。
2. 降低数据库延时连接时间,在PHP.INI设置,这样,当一台SLAVE机器shut down以后,可以更快的连接到另外一台。

论坛徽章:
0
5 [报告]
发表于 2008-10-10 17:09 |只看该作者
遍历的方法效率太低,我现在的做法就是用遍历。我的想法是尽量避免无效的数据库连接(即slave当掉的话就不连),但这样就需要有程序去定期维护各个slave的状态。不知道还有没有其他更高效的办法

论坛徽章:
0
6 [报告]
发表于 2008-10-14 14:56 |只看该作者
如果你使用程序来做的话,建议做一个心跳程序来监控数据库的状态,然后做个动态的数据库连接表,当心跳程序监控到数据库当机后,自动更新数据库连接表。

论坛徽章:
0
7 [报告]
发表于 2008-10-14 17:31 |只看该作者
如果不用程序做的话,有其他办法来实现?
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP