컴퓨터잡담

많은 DB 요청시 자동으로 막히는 현상 해제

by 디케 posted Nov 17, 2009
?

단축키

Prev이전 문서

Next다음 문서

ESC닫기

크게 작게 위로 아래로 댓글로 가기 인쇄

많은 DB 요청시 자동으로 막히는 현상 해제


에러가 발생했을 경우

Host 'hostname' is blocked because of many connection errors.
Unblock with 'mysqladmin flush-hosts'

이것은 ,mysqld 이 'hostname' 호스트로부터 많은 접속 에러(max_connect_errors) 를 받았을 경우에 발생합니. 


max_connect_errors 대량 발생 후 ,mysqld 는 무엇인가 

문제(크래커로부터의 공격등 ) 가 발생했다고 판단해 , 

이 호스트로부터의 접속을 거부하도록(듯이) 합니다. 

이것을 해제하는데는 ,mysqladmin flush-hosts 커멘드를 실행합니다.


디폴트에서는 , 접속 에러가 10 회 발생하면(자) ,mysqld 는 그 호스트를 

거부합니다. 이 값은 , 이하와 같이 서버를 개시하는 것으로 간단하게 

변경할 수 있습니다.

shell> mysqld_safe -O max_connect_errors=10000 &

특정의 호스트에 대해서 이 에러 메세지가 발생하는 경우는 , 우선 , 

그 호스트로부터의 TCP/IP 접속에 문제가 없는가 확인해 주세요. 

TCP/IP 접속이 기능하고 있지 않는 경우는 ,max_connect_errors 

변수의 값을 늘려도 효과는 없습니다.



출처 : http://coffeenix.net/board_print.php?bd_code=383

쉘(도스쉘, 리눅스쉘)모드에서는 

shell> mysqld_safe --max_connect_errors=10000 &



출처 : http://www.jaehun.org/8

mysqladmin variables -p
Enter password: 

접속을 하게되면
+---------------------------------+
| Variable_name | Value 
+---------------------------------+--------------------------------------------+
| back_log | 50 | basedir | / | binlog_cache_size | 32768 | bulk_insert_buffer_size | 
| 8388608 | character_set | euc_kr 등등

여러 값이 나타납니다.

이 부분에서 | max_connect_errors 값을 수백만.. 수천만으로 수정해주시면 되겠습니다.

###########
수정방법.
###########

/etc/my.cnf 파일에 들어가시면 상단부분에
============================수정해야 할 부분==============
set-variable = safe_show_database=ON
set-variable = key_buffer=128M
set-variable = max_allowed_packet=1M
set-variable = table_cache=256
set-variable = sort_buffer=2M
set-variable = record_buffer=2M
set-variable = myisam_sort_buffer_size=64M
set-variable = thread_cache=8
set-variable = max_connect_errors=1845829 <===이곳에 추가를 하였습니다.
# Try number of CPU's*2 for thread_concurrency
set-variable = thread_concurrency=8
#log-bin
server-id = 1
=========================================================
이부분에 추가를 해주시면 max_connect_errors 값이 수정됩니다.