2013-04-17 7 views
5
apache2: libmemcached/storage.cc:341: memcached_return_t memcached_send_ascii(memcached_st*, memcached_server_write_instance_st, const char*, size_t, const char*, size_t, time_t, uint32_t, uint64_t, bool, bool, memcached_storage_action_t): Assertion `memcached_failed(rc)' failed. 

Nie mam pojęcia, co powoduje to rzucanie, kiedy został rzucony lub dlaczego.Dziwny problem z Memcached z Apache

Czy to błąd krytyczny? Jeśli tak, to czy ktoś wie, gdzie mogę to naprawić?

Odpowiedz

6

Spojrzałbym na linię 341 storage.cc w libmemcached. libmemcached nie wykonuje dobrej roboty sprawdzania danych wejściowych, więc w zależności od powiedzmy .... twoje wartości klucza (nigdy nie używaj spacji w kluczach lub w przestrzeni nazw kluczy), możesz mieć mnóstwo problemów z błędami.

Patrząc na źródło, libmemcache oczekiwał odpowiedzi z serwera memcache po wysłaniu polecenia i nie wysłał polecenia. Może mieć wiele przyczyn (kluczowy błąd, błąd połączenia itp.).

http://bazaar.launchpad.net/~tangent-trunk/libmemcached/1.0/view/head:/libmemcached/storage.cc

+1

Dzięki źle spojrzeć – Ascherer

7

miałem ten sam problem z SugarCRM Community Edition v6.5.15 (Build 1083). Naprawiłem to zmuszanie demona memcached do negocjowania protokołu binarnego z klientami (włącznie z klientem C++ w języku libmemcached). To działa dla mnie, spróbuj.

W pakiecie Debian Wheezy memcached ma plik konfiguracyjny pod adresem /etc/memcached.conf. Dodaj tę linię na końcu pliku:

-B binary 

następnie uruchom memcached usług

service memcached restart 

Więcej informacji: http://linux.die.net/man/1/memcached

-1

miałem dokładnie ten sam błąd (z wyjątkiem "apache2" głowy) przy opracowywaniu biblioteka i był to błąd związany z gwintowaniem. Jedna instancja memcached client była dostępna dla wielu współbieżnych wątków, więc klient i serwer zdarzyły się w niespójnym stanie. Tak więc nie powiodło się twierdzenie o kodzie powrotu, rc, w bibliotece libmemcached. As far as I see, wewnętrzna struktura libmemcached, która definiuje połączenie, nie jest bezpieczna dla wątków.

Jednocześnie nie jest łatwo wyobrazić sobie, jak można to zrobić, prawdopodobnie błąd przewijania, występuje w PHP, który nie udostępnia narzędzi do wątkowania. W każdym razie powinieneś sprawdzić swój kod pod kątem czegoś nienormalnego w połączeniu z memcached.

0

Przede wszystkim - należy sprawdzić limit połączenia.

Ten błąd pojawia się, gdy usługa memcached osiągnęła limit połączeń (-cparam). Domyślnie limit ustawiony jest na 1024 połączeń. Ale jeśli próbowałeś wielowątkowość, limit może szybko osiągnąć.

Domyślna ścieżka config: /etc/sysconfig/memcached