freeswitch 之mysql性能优化篇

   大家在使用freeswitch时,为了方便freeswitch与GUI等进行结合,经常会使用mysql数据库对fs进行启动。但是freeswitch使用mysql启动后,会比使用自带数据库更加消耗资源,大家可以将源生的创表方法改成使用内存数据库进行优化,可以增加freeswitch的性能。

   具体步骤如下:

  1.进入freeswitch的源码包,cd src

  2.修改源生的switch_core_sqldb.c

  3.将需要用sql启动的表,将原本的建表语句:CREATE  TABLE complete    在末尾添加修改为:ENGINE=MEMORY DEFAULT CHARSET=utf8;

 4.到这里还是不行的,本人在高并发情况下发现,高并发下,表channel中没有索引,删除和修改时,往往比session慢很多,在持续高并发下,会将freeswitch造成卡顿的情况,所以还需要修改源码将channel中的uuid加入索引,在加入索引前,freeswitch每秒仅处理3条,加入索引后可以达到每秒处理上百条的效果。 在switch_core_sqldb.c中加入:  switch_cache_db_create_schema(sql_manager.dbh, "create index uuid1 on channels(uuid)", NULL);

5.freeswitch中recover表中因为有text字段,所以无法修改成内存表,如果有需求做HA的fs集群,可以将源码中text改为varchar(20000),根据实际测试这个字段不会超过2W个字符,然后将该表也改为内存表即可。记住也需要将查询的条件加上索引,这张表需要加单索引和组合索引6个。这里就不具体列出了。

6.修改完成后,编译后,make && make install 即可

ps:源生的建表语句,将字段长度设置太长,导致启动时,sql建表会报错,大家可以在这里把几个4096长度的字段改小,实际上是用不到这么长的长度。内存表默认在mysql中很小只有16M,在实际使用过程中,根据FS上需要的并发以及数据量进行适当的增大。

猜你喜欢

转载自blog.csdn.net/hnzwx888/article/details/82791125