这段时间在做 FreeSWITCH
的性能优化,把这个过程记录下来,持续更新。。
FreeSWITCH
原生是使用 sqlite
,在大并发的时候 IO 性能很捉急。网上有解决方案,将 db
文件放在内存里提高读写性能,但是 sqlite
有死锁的问题。这不是一个比较好的解决方案。
使用 MySQL
替换 sqlite
。配置简单,但是不能直接使用程序默认的建表,需要进一步优化才能提高并发。
关于 FreeSWITCH
使用 MySQL
可以见旧文: FreeSWITCH使用MySQL配置 。
在提高注册性能的时候,发现 MySQL
的读写也会成为性能瓶颈。解决方案是引擎 使用内存表 MEMORY
替代原本的 InnoDB
。如果直接用程序内置的建表会爆各种长度错误,需要适当调整 varchar
的长度。
修改了内存表之后,启动可能会报错。那是因为 MySQL
默认的内存表大小只有 16M
。我们可以稍微的提高他的大小。修改数据库配置文件 my.cnf
的 [mysqld]
选项下的 tmp_table_size
和 max_heap_table_size
大小,然后重启数据库。
在提高呼叫性能的时候&#