2013-04-17 20 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. 

Non ho idea di cosa stia causando questo, quando è stato lanciato, o perché.Problema Memcached strano con apache

Si tratta di un errore irreversibile? Se è così, qualcuno sa dove posso sistemarlo?

risposta

6

Guarderei la riga 341 di storage.cc in libmemcached. libmemcached non fa un buon lavoro di validazione degli input quindi, a seconda di say .... i valori delle chiavi (mai usare spazi nelle chiavi o nello spazio dei nomi delle chiavi) si possono avere molti problemi con gli errori.

Guardando all'origine, libmemcache si aspettava una risposta dal server memcache dopo l'invio di un comando e non è riuscito a inviare il comando. Quindi potrebbe avere molte cause (errore chiave, errore di connessione, ecc.).

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

+1

Grazie, malato diano un'occhiata – Ascherer

7

ho avuto lo stesso problema con SugarCRM Community Edition v6.5.15 (Build 1083). Ho risolto questo forzare il daemon memcached a negoziare il protocollo binario con i client (incluso il client C++ libmemcached). Questo funziona per me, provalo.

In Debian Wheezy, il pacchetto memcached ha un file di configurazione su /etc/memcached.conf. Aggiungere questa riga alla fine del file:

-B binary 

quindi riavviare il servizio memcached

service memcached restart 

Maggiori informazioni: http://linux.die.net/man/1/memcached

-1

Ho avuto esattamente lo stesso errore (ad eccezione di "apache2" testa) nello sviluppo di un libreria ed era un errore relativo al threading. Un'istanza di client memcached è stata letta da un numero di thread simultanei in modo che il client e il server si siano verificati in uno stato incoerente. Pertanto l'asserzione sul codice di ritorno, rc, in libmemcached non riesce. As far as I see, la struttura interna libmemcached che definisce una connessione non è thread-safe.

Allo stesso tempo, non è facile immaginare come si potrebbe fare questo, presumibilmente un errore di filettatura, accadere in PHP che non fornisce utilità di threading. Ad ogni modo dovresti controllare il tuo codice per fare qualcosa di anormale con una connessione memcached.

0

Prima di tutto - si dovrebbe verificare limite di connessioni.

Questo errore viene visualizzato quando il servizio memcached raggiunto limite di connessioni (param -c). Per impostazione predefinita, limite impostato su 1024 connessioni. Ma se hai provato a fare il multithreading, il limite potrebbe essere rapidamente raggiunto.

predefinito percorso config: /etc/sysconfig/memcached

Problemi correlati