2015-07-17 2 views
0

dalli отказывается подключаться и читать с удаленного сервера memcached, но telnet работает просто отлично.Не удается прочитать ключ из memcached с помощью dalli

Я подключен к удаленному серверу через SSH, и направил Memcached порт к моей машине, как это:

Host access.production 
    HostName 1.2.3.4 
    LocalForward 10001 9.8.7.6:11211 

Теперь, когда я пытаюсь прочитать ключи от memcached с помощью telnet, он работает просто отлично:

$ telnet localhost 10001 
Trying 127.0.0.1... 
Connected to localhost. 
Escape character is '^]'. 

Однако следующий рубин скрипт, использующий Далли не получится:

require 'dalli' 

client = Dalli::Client.new('localhost:10001') 
client.get('my_key') 

Почему dalli не подключился к memcached, а telnet - будет?

Обновлено. dalli возвращает эту ошибку:

I, [2015-07-17T11:22:36.839807 #4286] INFO -- : localhost:10001 failed (count: 0) Timeout::Error: IO timeout: {:host=>"localhost", :port=>10001, :down_retry_delay=>1, :socket_timeout=>0.5, :socket_max_failures=>2, :socket_failure_delay=>0.01, :value_max_bytes=>1048576, :compressor=>Dalli::Compressor, :compression_min_size=>1024, :compression_max_size=>false, :serializer=>Marshal, :username=>nil, :password=>nil, :keepalive=>true} 
/Users/gmile/.rvm/gems/[email protected]/gems/dalli-2.7.2/lib/dalli/ring.rb:45:in `server_for_key': No server available (Dalli::RingError) 
    from /Users/gmile/.rvm/gems/[email protected]/gems/dalli-2.7.2/lib/dalli/client.rb:328:in `perform' 
    from /Users/gmile/.rvm/gems/[email protected]/gems/dalli-2.7.2/lib/dalli/client.rb:53:in `get' 
    from dali_all_keys.rb:4:in `<main>' 
+0

Каким образом это провал? –

+0

@FrederickПрошу свои извинения, я только что обновил вопрос с сообщением об ошибке. – gmile

+0

Что такое латентность? Тайм-аут по умолчанию Dalli составляет 0,5 с –

ответ

0

Значение по умолчанию Dalli таймаут 500мс. Учитывая, что время отклика memcache обычно равно миллисекундам, и что вы помещаете свои экземпляры memcache близко к вашим серверам, это обычно достаточно.

С другой стороны, учитывая, что вы подключаетесь через SSH туннель вы можете увидеть гораздо больше латентности вы можете захотеть увеличить время ожидания:

Dalli::Client.new("127.0.0.1:10001", socket_timeout: 2.0)