perl中DBI連線MySQL過度頻繁導致連線不上

2021-06-07 20:42:11 字數 588 閱讀 9429

在做mysql回滾已經commit的事務測試時,發現當乙個binlog過大時,經常發生perl中dbi連線資料庫出錯,

dbi connect('test:127.0.0.1:3306','root',...) failed: can't connect to mysql server on '127.0.0.1' (99) at /…………/

最初以為是連線數溢位,導致連線失敗,但是通過監控發現mysql層面的連線是正常的。

應元告知99錯誤屬於os error。

原來是在os中,perl中dbi連線資料庫後,disconnect會使連線處於time_wait狀態,過度連線後,os中的連線數已經滿了,導致連線失敗。

解決辦法:

(1)修改/etc/sysctl.conf檔案,

新增net.ipv4.tcp_syncookies = 1

net.ipv4.tcp_tw_reuse = 1

net.ipv4.tcp_tw_recycle = 1

net.ipv4.tcp_fin_timeout = 30

(2)匯入新配置

/sbin/sysctl -p

這樣就解決了。

Perl中DBI介面非SELECT語句的返回值判斷

在dbi介面中可以靈活地用ddl和dml語句來操作各類資料庫,不過我在判斷非select的dml語句返回時發現乙個很容易被誤用的例子。如 dbh do update tempa set col1 100 where col2 god 用過的人都知道,該語句返回的是被改動的行數。問題就是當沒有一行更新...

Perl類 CGI和DBI程式設計

方法是一種屬於類的特殊子例程,要求第乙個引數必須是包含或指向物件的引用,並且這個引數是由perl自動隱式賦值的。house.pm package house sub new bless ref,class return ref sub set data value sub get data 1 同目...

perl筆記之DBI操縱資料庫

perl中的dbi 資料庫介面,database inte ce 是個對資料庫操縱很強大的東西,這次正好工作中用到了他的一點皮毛所以做個記錄。具體情況就是插入多條記錄 usr bin perl use dbi open aa,c1 my dbname sverlog my location loca...