现在用freeradius+mysql来实现PPPoE的验证,有时会发生一台楼宇交换机掉电的情况,这时会一下子有上百个下线和上线的记录(掉电后立即又有电了),这时可能freeradius可能就会招架不住了。因为默认与mysql连接的socket是256个,sql.conf中设置一超过256 freeradius 就无法启动。(用radiusd -x才知道没有启动成功)。
mysql的连接数怎么修改在网上很容易找到 ,但是即使修改了mysql的并发连接数为1000还是没用,因为freeradius还是256个。查看freeradius的源码,可以找到限制的地方在 freeradius-1.1.1/src/modules/rlm_sql/conf.h中,找到
#define MAX_SQL_SOCKS 256
改成
#define MAX_SQL_SOCKS 1024
重新编译一次,然后在sql.conf中找到
# number of sql connections to make to server
num_sql_socks = 256
原来的256就可以设置大于256的数字了,但是还是不要设置得太大才好,因为freeradius一运行的时候就会创建num_sql_socks个与mysql的稳定连接,而并非在需要用的时候才创建socket的。
另外,如果使用RouterOS做PPPoE认证,默认的radius超时时间设置在我这里似乎有问题,很容易就显示raiuds connection timeout,设置大一点才不会出问题,好像是设成了3000。