Я быстро просмотрел другие вопросы с похожими названиями, и ни один из них не особенно похож на те проблемы, которые у меня сейчас возникают.
По сути, у нас уже более двух лет работает многоузловое memcached-кольцо, и по большей части без проблем. Установка memcache была недавно перенесена на выделенные серверы, и ее емкость была увеличена втрое (с 2x 1 ГБ до 2x3 ГБ). Сначала у нас были проблемы с тем, что я считаю проблемами с тем, как библиотеки php общались с серверами, либо проблемы с упорядочением списка серверов, либо их неправильный запуск.
Серверы «казались» работающими правильно, но казалось, что ключи хранятся на нескольких серверах, и истечение срока действия не приведет к истечению срока действия всех экземпляров значения.
По сути, мы изменили механизм хеширования со стандартного на согласованный, и проблемы с поиском ключей (и сроком действия / получением), и все, похоже, вернулось в норму.
Тем не менее, я наблюдал за событиями в течение последних нескольких недель и заметил, что первый сервер, похоже, подвергается атакам намного, намного чаще, чем второй (инструмент мониторинга кэша памяти PHP сообщает об одном усреднении 1200 просмотров второй, а второй только на 500).
Кто-нибудь может объяснить:
Я обнаружил, что memcached является таким фантастическим инструментом, идеально подходящим для своей цели, но фактических руководств по передовой практике и полезной документации (очень немногие вообще описывают ее сколько-нибудь подробно) очень мало. Если я смогу получить некоторое представление о том, что происходит, я обязательно опубликую ее как техническую статью для всеобщего обозрения (чтобы помочь в будущем), но у меня сейчас проблемы!
заранее спасибо
Вы уверены, что внешние интерфейсы, которые взаимодействуют с Memcached, правильно синхронизировали записи конфигурации для вашего пула?
Могут ли все серверы установить чистое соединение с узлом Memcached, у которого есть проблемы с подключением?
Убедитесь, что у вас также включен Memcached :: OPT_LIBKETAMA_COMPATIBLE.
По поводу конфигурации; если вы храните большие объекты, сжатие / igbinary ускорит работу на конце сетевого ввода-вывода, очевидно, что может быть недостаток, поэтому каждый случай отличается. Бенчмаркинг - ключ к успеху.
Если ваши ключи имеют неравные шаблоны доступа, вы увидите неравный трафик для каждого узла memcached. например Если у вас есть 2 ключа, один из которых a
получение / установка 500 раз в секунду и один b
который получает / устанавливает 250 раз в секунду, тогда узел, содержащий a
будет иметь в два раза больше трафика, чем узел, содержащий b
.
В моем случае у нас было 8 узлов memcached с несколькими тысячами ключей. Один из этих ключей выполнял около 800 операций доступа в секунду при пиковом трафике, а почти все другие ключи выполняли менее 1 операций загрузки в секунду. Узел memcached, у которого был занят ключ, демонстрировал значительно больший трафик, чем другие.
Если вы хотите равномерно сбалансировать трафик для каждого из ваших узлов memcached, вам необходимо: