2012-10-10 2 views
0

나는 원격 데이터베이스 서버를 연결하는 응용 프로그램이 있습니다.신속하게 상태를 mysql 서버를 감지하는 방법

그 이유와 이유로 인해 mysql 서버가 멈추고 나면 애플리케이션이 서버 상태를 빠르게 감지 할 수 없습니다. 데이터베이스 서버에 다시 연결하는 데 20 초 정도 걸립니다. 그래서 내 GUI가 얼어 버렸어. 나는 20초

지금까지 내가

  • mysql_ping
  • mysql_real_connect() 함수

기능

  • MYSQL_OPT_RECONNECT
  • MYSQL_OPT_CONNECT_T을 시도

    위한 GUI 동결을 원하지 않는다 IMEOUT

    옵션

내 환경은 멀티 스레드하지 않습니다. 그래서 더 빠른 탐지를하는 방법?

+0

때 동결 않습니다 다운 등과 같은

그러나,이 시나리오를하지 않는 이유는 무엇입니까? 비활성 상태이거나 쿼리가 중지됩니까? –

+2

쿼리를 별도의 프로세스에 넣고 IPC? 시스템에 스레드 할 수없는 이유가 있습니까? GUI를 가진 모든 최신 시스템은 대개 OS가 아주 작은 임베디드 시스템 (스레드는 대개 프로세스로 대체되지만 메모리 보호 기능이 없기 때문에 프로세스를 스레드로 사용할 수 있음)에서도 스레딩 기능을 제공합니다. –

+0

@KirilKirov 재 연결 시도 도중 멈춤 – onurozcelik

답변

0

mysql 포트 (보통 3306)로 텔넷을 시도 할 수 있습니다. 연결이 거부되면, mysql은 응답하지 않는다.

작업 중.

[email protected]:~# telnet localhost 3306 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 
L 
5.6.4-m7)#m#_8:W�hP5YBzaXs[MOmysql_native_password 

다운.

[email protected]:~# telnet localhost 3306 
Trying 127.0.0.1... 
telnet: Unable to connect to remote host: Connection refused 

거부 ​​된 메시지는 거의 즉시입니다.

+2

서버 위치에 따라 아직 시간이 걸릴 수 있습니다. 특히 네트워크 케이블이 제거 된 경우. –

3

동 기적으로 네트워킹을 수행하는 경우 동결 상태에 대비하십시오. 바로이 이유 때문에 별도의 스레드에서 데이터 조작을하는 것이 좋습니다.

+0

내 조건에 데이터 조작이 없습니다. 난 그냥 MySQL 서버 상태를 확인하고 싶습니다 – onurozcelik

+0

내가 요아킴에게 말했듯이 : IPC 또는 멀티 스레딩은 GUI 문제를 해결하지만 빠른 탐지 문제를 해결하지는 못합니다. – onurozcelik

+0

대기 시간은 다음과 같은 합계로 나타납니다 : 요청을 준비하는 MySQL 라이브러리 호출, TCP 스택 대기 시간, 네트워크 대기 시간, MySQL 서버에서의 TCP 스택, MySQL이 요청을 구문 분석하는 동안 지연, TCP 응답, 네트워크 대기 시간, 컴퓨터에서 TCP 스택, 라이브러리 함수는 유효성을 검사하여 응용 프로그램에 값을 반환합니다. MySQL 서버가 과부하 상태에 있지 않으면, 네트워크 대기 시간이 전반적인 지연을 지배합니다. –

0

이미 다른 사람들에 의해 논의 되었 듯이, 다중 스레드 또는 프로세스 사용에 대해서는 언급하지 않습니다. 당신은 TCP에서 MySQL 서버에 연결할 수 있습니까? 대부분의 시나리오에서 그런 식으로 닫힌 연결을 나타 내기 위해 TCP 지느러미를 즉시 받게되지만 때로는 그렇지 않을 수도 있습니다. 그러나 가장 강력한 응용 프로그램은 적절한 닫습니다. 서버가 동의하지 않는 경우

MYSQL how to specify protocol

shell> mysql --protocol=TCP 

, 내가이 구성 설정에서 활성화 할 수 있다고 생각합니다. 서버가 갑자기 네트워크를 취득하거나, 클라이언트의 연결이

관련 문제