복붙노트

[REDIS] 레디 스 : 이상한 프로토콜 / 네트워크 오류

REDIS

레디 스 : 이상한 프로토콜 / 네트워크 오류

나는 레디 스를 실행하고 ezmobius의 레디 스 보석 [1]을 사용하여 루비에서 연결하고 있습니다.

주기적으로 나는 이상한 결과를 반환 레디 스에 의한 내 레일 응용 프로그램에서 예외 시리즈를 얻을 수 (하루에 한 번 약).

그들은 종종에서 예외 등에 의해 트리거됩니다

Redis::ProtocolError: Protocol error, got '3' as initial reply byte                         

또는

Redis::ProtocolError: Protocol error, got '9' as initial reply byte                      

또는 때때로

Errno::EAGAIN: Resource temporarily unavailable - Timeout reading from the socket

그것은 일반적으로 연결 문제를 정리하기 위해 내 레일 서버를 다시 시작해야합니다. 나는, 페도라 코어 8을 실행하는거야 2.3.8 레일, 레디 스 보석 2.0.3. 나는 설치 system_timer 보석을 가지고있다. 아무도 내가 이러한 오류를 막을 수있는 방법 어떤 아이디어를 가지고?

[1] 레디 보석

해결법

  1. ==============================

    1.난 그냥 저장할 수도 레디 스에서 큐의 작업과는 레디 스 펍 / 서브 통해 통신 내 배경 노동자에 같은 일을 나타났습니다. Google 결과는 둘 이상의 스레드에서 같은 레디 스 개체를 사용하는 경우이 나는이 내 응용 프로그램의 경우이 경우 물론,이 조사해야 아니에요 ... 일어날 수있는 제안 (하지만 난 스레드를해야합니까이 ).

    난 그냥 저장할 수도 레디 스에서 큐의 작업과는 레디 스 펍 / 서브 통해 통신 내 배경 노동자에 같은 일을 나타났습니다. Google 결과는 둘 이상의 스레드에서 같은 레디 스 개체를 사용하는 경우이 나는이 내 응용 프로그램의 경우이 경우 물론,이 조사해야 아니에요 ... 일어날 수있는 제안 (하지만 난 스레드를해야합니까이 ).

  2. ==============================

    2.나는과 약간 유사한 문제가 있었다

    나는과 약간 유사한 문제가 있었다

    Errno::EAGAIN: Resource temporarily unavailable - Timeout reading from the socket
    

    내 레디 스 서버가 연결을 300 초 시간 제한 설정을했다 밝혀졌습니다. 5 분 후에, 레디 스 내 노동자에 대한 연결을 죽이는 그들은 위의 오류를 기록했다.

    당신의 소켓 시간 초과가 모든 x 초를 발생하는 경우, 그 의심의 여지가 당신의 '유휴'연결을 죽이는 레디 스 없다!

  3. ==============================

    3.thread_safe 옵션 : 연결을 초기화 할 때,을 통과해야합니다 :

    thread_safe 옵션 : 연결을 초기화 할 때,을 통과해야합니다 :

    Redis.connect(:thread_safe => true)
    
  4. from https://stackoverflow.com/questions/3711953/redis-weird-protocol-network-errors by cc-by-sa and MIT license