• Из-за большого количество посетителей сайт поплыл, что делать?

    @andreyvlru
    менеджер-программист
    1500 / 10 / 60 = 2.5 запроса в секунду это очень мало

    локализуйте проблему
    Вам нужно узнать сколько по времени генерируются страницы
    за какое время выполняются запросы к базе
    и после этого вам станет понятно что улучшать
    Ответ написан
    1 комментарий
  • Работа с удаленной базой данных MySQL. Почему медленная передача данных?

    @andreyvlru
    менеджер-программист
    Самое простое и часто встречающее в данной ситуации - долгий ресолв через DNS
    остальное из имеющейся информации тяжело сообразить
    Ответ написан
    Комментировать
  • Оптимизация nginx, php-fpm, postgresql под высокую нагрузку?

    @andreyvlru
    менеджер-программист
    Каждый компонент вашей системы требует отдельного анализа.
    В целом при простой грамотной настройке у вас более чем достаточно ресурсов для обслуживания указанного трафика, если только вы на ходу не будете сложные группировки или вложенные запросы делать.

    Тот сервер что вы привели он скорее всего даже избыточен, зачем вам столько памяти если БД совсем небольшая?

    Выделяйте достаточное количество памяти на mysql, redis.
    Проверьте сетевые настройки чтобы они были настроены на высокое количество подключений
    nginx, php-fpm - там все стандартно достаточно для вашей нагрузки.
    В процессе работы вы сами увидите узкие места, но вообще железо у вас мощное и может простить довольно много ошибок
    Ответ написан
    Комментировать
  • Пре-калькуляция цен - как кешировать?

    @andreyvlru
    менеджер-программист
    Может быть вам достаточно будет примерной сортировки.
    Рассчитайте некий упрощенный ценовой индекс для каждого объекта и сортируйте по нему.
    Можно усложнить и ценовой индекс сделать также зависимым от срока аренды и недели-месяца в году.

    Задача во многом аналогична тому что делают многочисленные поисковики билетов, интересно как это делают они.
    Ответ написан
    Комментировать
  • Стоит ли выность настройки пользователя в другую таблицу?

    @andreyvlru
    менеджер-программист
    вопрос спорный
    но я бы вынес в отдельную
    Ответ написан
    Комментировать
  • Иммиграция разработчика в Канаду. Что, где и зачем?

    @andreyvlru
    менеджер-программист
    Заканчивайте ВУЗ и учите английский!
    Шестерка по IELTS это мало, вам нужно 7 и выше
    Если смотрите на Канаду, то смотрите и на США
    И вам очень стоит подумать об обучении непосредственно в этих странах, если найдете возможность
    то большинство других вопросов отпадут сами собой.
    Ответ написан
    Комментировать
  • Sphinx RT или Redis?

    @andreyvlru
    менеджер-программист
    Не очень понятно как и для чего вы используете сфинкс
    но я бы решал это с помощью Redis, остальное уже по задаче
    Ответ написан
  • Какой инструмент выбрать для визуального анализа данных (база MySQL)?

    @andreyvlru
    менеджер-программист
    в Excel есть совершенно чудные Сводные таблицы (Pivot table)
    поробуйте
    Ответ написан
  • MySQL поиск. Какие из моих вариантов наиболее рациональны?

    @andreyvlru
    менеджер-программист
    Сфинкс более навороченный, но сложнее в настройке и обслуживании
    фактически надстройка специально для полнотекстового поиска

    Если MySQL 5.6 то наверное лучше попробовать встроенный полнотекст
    Ответ написан
    Комментировать
  • Тормоза с MySQL. Может ли это быть SSD?

    @andreyvlru Автор вопроса
    менеджер-программист
    Все оказалось совсем не так. База не тормозила, тормозили веб-сервера

    Цепочка примерно следующая
    В час пик на веб серверах начинает увеличиваться время ответа. С 50-100ms до 1000-1500ms.
    Каждый запрос висит дольше обычного и дольше занимает коннект к MySQL. В итоге все возможные коннекты выбираются и все упирается в max_mysql_connection

    Веб-сервера хоть и работают медленнее, но все равно потихоньку шевелятся. У них количество допустимых процессов выше чем максимум коннектов к БД. В итоге мы думали что тормозит база. Там еще было некоторое количество slow запросов, но они видимо всегда были, просто пока не было ошибок мы на них внимания не обращали.

    Проблему решаем следующим образом
    1. Несколько перебалансировали раздачу нагрузки по веб-серверам, чтобы процессор равномернее использовался
    2. Заказли еще один веб-сервер
    3. Оптимизируем "тяжелые" страницы

    P.S. Тем не менее TRIM на серверах бд все равно нужен и мы будем настоятельно просить инженеров хостера включить его
    Ответ написан
    Комментировать
  • Странные временные тормоза MySQL. Какая причина?

    @andreyvlru Автор вопроса
    менеджер-программист
    В процессе решения мигрировали на 5.6, лучше точно не стало
    возможно производительность даже ухудшилась (ну или так совпало)

    потом вышли на запрос, который обнулял 250 тыс строк (считай всю таблицу).
    Сам запрос простейший: update a set a.x = 0;
    Он выполнялся 20 секунд!. И в процессе выполнения в лог начинали сыпаться slow queries.

    В реальности данные менялись у 1 тысячи строк, остальное оставалось нетронутым. Добавили условие по индексированному полю, чтобы менять только нужные и он стал менее секунды выполняться.

    Остается вопрос, почему это все раньше работало....
    подозреваю появление зависимостей которым нужна таблица, а она в этот момент обновляется. Пока они ждут, мгновенно вырастает очередь коннектов, они упираются в лимит и все падает

    ----

    Все оказалось совсем не так. База не тормозила, тормозили веб-сервера

    Цепочка примерно следующая
    В час пик на веб серверах начинает увеличиваться время ответа. С 50-100ms до 1000-1500ms.
    Каждый запрос висит дольше обычного и дольше занимает коннект к MySQL. В итоге все возможные коннекты выбираются и все упирается в max_mysql_connection

    Веб-сервера хоть и работают медленнее, но все равно потихоньку шевелятся. У них количество допустимых процессов выше чем максимум коннектов к БД. В итоге мы думали что тормозит база. Там еще было некоторое количество slow запросов, но они видимо всегда были, просто пока не было ошибок мы на них внимания не обращали.

    Проблему решаем следующим образом
    1. Несколько перебалансировали раздачу нагрузки по веб-серверам, чтобы процессор равномернее использовался
    2. Заказли еще один веб-сервер
    3. Оптимизируем "тяжелые" страницы

    P.S. Тем не менее TRIM на серверах бд все равно нужен и мы будем настоятельно просить инженеров хостера включить его
    Ответ написан
    Комментировать
  • Как записать данные, приходящие по TCP/IP в MySQL (желательно на PHP)?

    @andreyvlru
    менеджер-программист
    Вам надо организовать работу с сокетами на уровне php.
    Здесь можно посмотреть пример tcp/ip cервера.
    Если нужно записывать в БД то подключайте mysql и пишите туда.
    Если вы используйте какой-то стандартный протокол то лучше поискать среди готовых решений, очень вероятно что найдется то что вам подойдет или может быть донастроено под ваши нужды.
    Ответ написан
    Комментировать
  • Почему nginx долго отдает сайт?

    @andreyvlru
    менеджер-программист
    Очень вероятно что проблема в долгом ресолве localhost в ip адрес.

    У меня было очень похоже. Php коннектился к бд несколько секунд.
    Простое решение - подключаться к 127.0.0.1 (не использовать localhost)

    Другой вариант - можно попробовать добавить в hosts следующие записи
    127.0.0.1 localhost
    ::1 localhost

    У меня это сработало и все стало открываться моментально.
    Ответ написан
  • MySQL - Как правильно сформулировать запрос?

    @andreyvlru
    менеджер-программист
    Не уверен что это то что надо, но может поможет

    select u1.name, u2.name,d.id
    from dialogs d
    left join users u1 on (d.uid1 = u1.uid)
    left join users u2 on (d.uid2 = u2.uid)

    Вы получаете это из БД, а потом уже в php смотрите кого вам поставить в отправителя, кого в получателя
    в зависимости от того кто смотрит user1 или user2
    Ответ написан
    Комментировать
  • Как получить статус задачи в RabbitMQ?

    @andreyvlru
    менеджер-программист
    Мы реализовали через memcached
    туда пишется состояние задачи и там же мы проверяем что происходит с заданием
    но хотелось более прямого пути
    Ответ написан
    Комментировать
  • Как пресечение дублирование результатов запросов?

    @andreyvlru
    менеджер-программист
    Проиндексируйте свой контент сфинксом, при составлении индекса он туда записывает слова без окончания
    то есть "машина" и "машины" будут для него одинаковыми. Если вы будете искать по таким словам, то результаты будут одинаковыми. На выходе сфинкс даст вам набор идентификаторов из БД, его можете сохранить как вам удобно.
    Ответ написан
    Комментировать
  • LeaseWeb: Германия или Нидерланды?

    @andreyvlru
    менеджер-программист
    Раньше брал хостинг у netdirekt. Потом их купил Leaseweb и все стало как-то непонятно. Тех поддержка в Голландии ничего толком не могла ответить про немецкую площадку. Поэтому перешел полностью на Амстердам. Ну и сама компания голландская, а обычно обслуживание лучше всего в головных офисах.

    Поэтому рекомендую ДЦ в Голландии
    Ответ написан
    Комментировать
  • Как распределить запросы к MySQL по серверам?

    @andreyvlru Автор вопроса
    менеджер-программист
    Про haproxy много чего хорошего пишут, спасибо, посмотрю внимательнее.
    Ответ написан
    Комментировать
  • Как найти причину нагрузки на процессор?

    @andreyvlru Автор вопроса
    менеджер-программист
    похоже что проблема в банальной нехватке памяти
    Сервер 16Gb памяти
    redis 7 Gb
    php-fpm 5-8 Gb

    Думаю малейшие перегрузки по памяти приводили к свопу или отказам. Подтверждений правда пока не увидел. Расгрузил сервер, убрал часть нагрузки на запасной, посмотрим как сегодня на пике нагрузки будет.

    P.S. Спасибо за наводку на newrelic - штука офигенная, но и дорогая собака
    Ответ написан
    Комментировать
  • Как сделать постомат своими руками?

    @andreyvlru Автор вопроса
    менеджер-программист
    Как думаете где можно поискать продавцов такой техники?
    Ответ написан