Мне пришлось переключить корпоративный сайт Django 1.11 с корпоративного сервера PostgreSQL 9.4 на кластер AWS RDS Aurora-PostgreSQL 10.Первоначально у меня сложилось впечатление, что это должна быть простая миграция, поскольку я не использовал какой-либо код для конкретной версии.
Сразу после миграции сайт начал ужасно разрушаться.Запросы, которые раньше занимали миллисекунды, внезапно подскочили в 100 раз, вызывая тайм-ауты по всем нитям оружейного оружия.Я также продолжал видеть, что соединения сбрасывались как с RDS, так и с Django.
Он продолжал выглядеть так, как будто это были какие-то настройки, которые мне нужно было бы сопоставить между предыдущим сервером и текущим сервером, но несмотря на привлечение экспертов PostgreSQL и поддержку AWS, тамне было простых ответов (или даже сложных).Наконец, мне пришлось настроить большинство запросов в моем коде Django, чтобы обеспечить стабильность сайта.
В приложении есть несколько запросов, которые ссылаются на внешние отношения, поэтому я использовал ряд prefetch_related и аналогичных приемов, чтобы исправитьпомедленнее.Итак, запрос, который занимал 0,5 секунды, перешел к 80 секундам, а после добавления prefetch_related вернулся к 0,5 секундам.
Несмотря на то, что сайт теперь стабилен, я публикую это в надежде, что какой-то PostgreSQLи / или эксперт Django видит это и признает это признаком некоторой неправильной настройки.Я не в состоянии поделиться примерами запросов и не прошу оптимизации запросов.Вопрос в том, что может сделать запрос в 100 раз медленнее при переходе с одного сервера PostgreSQL на другой без изменения кода приложения?