1. 程式人生 > >修改freeradius與mysql連線時的最大連線數

修改freeradius與mysql連線時的最大連線數

         現在用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。