每个月或两个月,一群机器人访问我的网站并快速打开连接,以达到我当前的max_user_connection值25(将其增加到75)。目前我重新启动服务器,它再次正常工作,直到下一个群来。它是一个用perl编写的网上商店,试图使用DBI连接获取数据。
所以我有一些问题: 问题会在一段时间后解决,或者打开过程会一直运行直到重置并尝试从锁定的数据库中获取信息吗? 是否可以执行小型查询以检查数据库上的最大用户连接是否为高? 任何其他想法来保护DOS攻击或僵尸群(想想在htaccess中重新统一亚洲IP)?
答案 0 :(得分:2)
您可以使用模块检测(例如机器人)。例如HTTP::BrowserDetect。
use HTTP::BrowserDetect;
my $browser = HTTP::BrowserDetect->new($user_agent_string);
if ( $browser->robot() ) {
# dont open an mysql connection,
# return a cached version of the requested page
# or something like that
...
}