簡體   English   中英

與apache奇怪的Memcached問題

[英]Weird Memcached issue with apache

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.

我不知道是什么導致它拋出,拋出時,或為什么。

這是致命錯誤嗎? 如果是這樣,有誰知道我可以在哪里解決它?

我在SugarCRM Community Edition v6.5.15(Build 1083)中遇到了同樣的問題。 我已經修復了這個強制memcached守護進程與客戶端協商二進制協議(包括libmemcached C ++客戶端)。 這對我有用,試一試。

在Debian Wheezy中,memcached包在/etc/memcached.conf中有一個配置文件。 在文件末尾添加此行:

-B binary

然后重啟memcached服務

service memcached restart

更多信息: http//linux.die.net/man/1/memcached

我會在libmemcached中查看storage.cc的第341行。 libmemcached沒有很好地完成輸入驗證,所以根據說....你的鍵值(永遠不會在鍵或鍵名稱空間中使用空格),你可以在遇到錯誤時遇到很多麻煩。

查看源代碼,libmemcache在發送命令並且無法發送命令后期待來自memcache服務器的回復。 所以它可能有很多原因(鍵錯誤,連接錯誤等)。

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

首先 - 你應該檢查連接限制。

當memcached服務達到連接限制(-c param)時,會出現此錯誤。 默認情況下,限制設置為1024個連接。 但是,如果您嘗試進行多線程處理,則可能會很快達到限制。

默認配置路徑:/ etc / sysconfig / memcached

在開發庫時我有完全相同的錯誤(除了“apache2”頭),這是一個與線程相關的錯誤。 memcached客戶端的一個實例由多個並發線程訪問,因此客戶端和服務器碰巧發生在不一致的狀態。 因此,libmemcached中返回代碼rc的斷言失敗。 據我所知 ,定義連接的libmemcached內部結構不是線程安全的。

同時,很難想象你怎么能在PHP中發生這個,可能是一個線程錯誤,它不提供線程實用程序。 無論如何,您應該檢查您的代碼,以便使用memcached連接執行異常操作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM