Can't connect to MySQL server on 'localhost'(10055)
connect to server at 'localhost' failed
error 2003 <hy000>: can't connect to mysql server on 'localhost' <10055>
You can check this by doing 'tennet localhost 3306'
도대체 뭔가?
아무리 검색해봐도 없다.
해외사이트에서도 자료가 없다.
얼마 지나지 않아 접속이 되지 않는다라거나
MYSQL을 재시작해도 소용없고
오로지 재부팅 밖에 해결책이 없단다.
처음에는 MySQL을 의심했다.
my.ini의 환경설정을 수십번 해봐도 마찬가지,
그래서 4시간마다 MySQL 재시작을 설정해 놨지만 마찬가지,
결국 재부팅 밖에 답이 없었다.
무엇때문일까?
error 2003은 어떤 오류메시지인가?
위의 메시지는 로컬에서 조차 접속을 차단하는 경우이다.
왜 이같은 상황이 벌어진걸까?
나는 서버가 2대있다.
하나는 httpd, db를 같이 쓰는 서버하나와 db서버 전용을 하나 가지고 있다.
오류메시지 10055에 대해 찾아보니 윈도우 소켓(WinSock)이 문제라는 이야기를 확인해봤다.
netstat -an > net.txt 하면 10MB 가량의 파일이 만들어진다.
확인해보면 db서버로 접속하는 tcp항목이 상당히 많음을 알수있다.
포트를 60000번을 사용하는 것들도 눈에 뛰었다.
mysqladmin processlist 해보니
포트가 계속 늘어나고 줄어들 기미가 보이지 않았다.
포트는 총 65,535개인데 혹시 포트수량을 어느수량 이상을 사용하면 소켓을 차단해 버리는 건 아닐까?
그럼 포트를 초기화하는 프로그램을 없을까?
궁금하다.
나에게는 아직 미해결 과제이다.
꼭 해결해야지.
근데 답이 될만한 자료들이 없다. ㅜ.ㅜ
WinNT - Accept 가능한 기본 소켓 제한수 3800 늘리기.
C++/Network 2008/05/22 13:302. gpg에서 MaxUserPort로 검색하기.
3. 빗자루님 개인 홈페이지 관련글 http://www.myevan.net/phpBB/viewtopic.php?t=148
안녕하세요. 매크로 없는 메비~랍니다.
WinNT 계열의 TCP/IP 설정에 보면 Accept 할 수 있는 소켓 개수를 제한해 놓은 부분이 있습니다. 리눅스에서 소켓 제한이 컴파일시에 걸리듯이 Windows 2000/XP의 경우(2003도 같다고 알고 있지만 확인은 안해봤네요.) 이 셋팅을 바꿔주지 않으면 Listen->Accept 할 수 있는 소켓의 개수는 1024 ~ 5000 번 이내에서만 할당이 되고 대략 3977 개 이상은 받을 수 없게 됩니다.
그렇지만 Windows 에서 이 사이에 쓰는 접속도 있고 여러가지 클라이언트 접속도 이 사이에 들어오는 경우가 많기 때문에 실제 접속은 3977 보다 적어지게 됩니다. 다음 레지값을 적용해주고 재시작(이 꼭 필요한지는 모르겠습니다만 저는 매번 재시작을 해줬네요.)을 해주시면 됩니다. 아래 레지는 TCP/IP 레이어에 작용하기 때문에 IIS나 기타 서비스등을 통한 대량의 접속을 받고 싶을때도 적용을 해주셔야 많은 동접을 받을 수 있습니다.
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters]
"MaxUserPort"=dword:0000fffe
"TcpWindowSize"=dword:00004470
p.s.테스트 한번 더 부탁합니다. ^____^
p.s.2.물론.. 소켓이 한계이상 올라가면 그것도 곤란합니다. 1만개만 해도 10k 이고 기본 소켓당 버퍼를 32KB 씩만 할당해 주더라도 320MB가 순수하게 소켓 버퍼로 사용되게 됩니다. 하드하죠..? (라지만 요즘 서버들 1~2G는 기본이고 좀 넉넉히 4G씩 주기도 하죠.)