2003: '127.0.0.1:3306'에서 MySQL 서버에 연결할 수 없음(99 요청된 주소를 할당할 수 없음)
멀티코어 64비트 CentOS(또는 ubuntu) 머신에서 단일 mysql/mariadb 인스턴스에 "삽입"을 수행하는 python2.7 애플리케이션을 실행하고 있습니다.병렬 프로세스/코어가 4 또는 6을 넘으면 바로 이 오류가 나타납니다.(실행의 다른 시점에서) 2003: '127.0.0.1:3306'의 MySQL 서버에 접속할 수 없음(99 요청된 주소를 할당할 수 없음)
CentOS6.5, mariadb 10.1에서 어플리케이션을 실행하고 있으며, Ubuntu 14.04(64비트)에서도 같은 문제가 발생하고 있습니다.
다음과 같은 변경을 시도했습니다.
In my.cnf file:
[mysqld]
interactive_timeout=1
wait-timeout = 1
thread_cache_size = 800
max_connections = 5000
#max_user_connections = 5000
max_connect_errors = 150
In sysctl.conf file:
fs.file-max = 65536
In limits.confg file:
* soft nproc 65535
* hard nproc 65535
* soft nofile 65535
* hard nofile 65535
2개의 코어 Mac에서는 코드가 정상적으로 동작하기 때문에, 이것은 설정상의 문제라고 생각하고 있습니다.설정의 변경이나 접속의 재이용의 간단한 방법을 제안해 주실 수 있습니까?
mysqld를 연결/연결 해제하는 속도가 상당히 높을 수 있습니다.또한 오류 99를 누르면 TIME_WAIT 상태의 연결이 많이 나타납니다.netstat -nt
출력은?
문제는 빈번한 재접속과 TIME_WAIT 지연으로 인해 클라이언트포트가 매우 빨리 고갈되는 것입니다.이는 병렬 클라이언트 수가 많을수록 이 문제가 발생할 가능성이 높은 이유이기도 합니다.
TL;DR 솔루션은 예를 들어 net.ipv4.tcp_tw_reuse를 1로 설정하는 경우가 있습니다.
echo 1 > /proc/sys/net/ipv4/tcp_tw_reuse
또는 클라이언트와 mysql 서버가 같은 머신에 있기 때문에 TCP 대신 UNIX 도메인소켓 접속을 사용할 수 있습니다.이것은 127.0.0.1 대신 verbatim "localhost" 호스트 이름에 연결하는 것만큼 간단할 수 있지만, 다양한 Python 커넥터에 대해 그리고 이러한 커넥터가 어떻게 처리되는지 모르겠습니다.
자세한 힌트 및 설명은 을 참조해 주세요.
http://www.fromdual.com/huge-amount-of-time-wait-connections
그리고.
http://vincent.bernat.im/en/blog/2014-tcp-time-wait-state-linux.html
최근 환경에서는 Traefik 2.0-beta 리버스 프록시 뒤에 있는 Docker 컨테이너에서 MariaDB에 액세스하려고 할 때 동일한 오류 메시지가 표시되었습니다.
에러 메세지는 실제와 비교해도 의미가 없기 때문에, 2센트를 추가합니다.
그리고 Traefik을 사용하여 MariaDB 서버에 지정한 로컬 도메인 이름이 아닌 Docker 서비스 이름을 호스트로 사용하는 솔루션을 찾았습니다.
새로운 정보는 https://github.com/jclaveau/docker-standalone-webdev-ci-stack/tree/master/examples/docker-example-lamp 에서 입수할 수 있습니다.
이 문제를 해결하기 위해 수면 메커니즘을 사용할 수 있습니다.
import time
time.sleep(2)
## 잠을 설치다.
그러면 대기 상태의 프로세스 수가 줄어듭니다.
언급URL : https://stackoverflow.com/questions/24884438/2003-cant-connect-to-mysql-server-on-127-0-0-13306-99-cannot-assign-reques
'programing' 카테고리의 다른 글
소스 파일을 더 이상 사용할 수 없습니다. (0) | 2022.12.24 |
---|---|
Java의 DAO(Data Access Object) (0) | 2022.12.24 |
Java 이름 숨기기:하드웨이 (0) | 2022.12.24 |
문자열에서 숫자가 아닌 모든 문자를 제거합니다. [^0-9]이(가) 예상과 일치하지 않습니다. (0) | 2022.12.24 |
MariaDB, Larabel 5.4 커넥터가 있습니까? (0) | 2022.12.24 |