Настройка производительности эластичного поиска на AWS EC2

Я новичок в настройке сервера и настройке производительности.
У нас есть приложение, spring(4.1) + elastic search(1.7.3) + mongodb(2.7) + ubuntu 14.04. У нас есть локальная машина intel i7, 16GB жесткий диск, другой AWS EC2 (c3.2XLARGE) 8 core 15 gb SSD.
Тестирование производительности на локальном мы смогли коснуться 20k одновременный запрос в 4sec. Тот же тест на AWS завершается с ошибкой после достижения отметки 600. Потоки начинают входить в ожидание, а затем исключение тайм-аута сокета.
Исследуя немного больше, я пытался непосредственно протестировать Elastic search REST endpoint. Найденный elastic search start breaking after it touches 600 parallel threads.

У меня мало вопросов.

  1. Ядро AWS не так хорошо, как ядра intel i7.
  2. I have changed Ulimit unlimited in local and server both, is there any other setting at OS level I need to change.
  3. Измените ES_HEAP_SIZE на 8 ГБ. Хотя набор данных mongo не более 100 МБ. Есть ли какие-либо другие настройки, которые мне нужно проверить для ES.

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

1 ответ

  1. Почему бы вам не измерить узкие места и не сравнить среду разработки с aws?

    • EC2 использует серверные процессоры, которые отлично подходят для параллельной обработки, но их однопоточная производительность может быть ниже, чем у самого мощного i7 — особенно если вы используете c3, который основан на более старом типе процессора. Попробуйте использовать типы экземпляров c4.
    • Убедитесь, что вы предоставляете EBS необходимое количество операций ввода-вывода. Имейте в виду, что выделенный SSD будет иметь гораздо более высокий IOPS, чем то, что доступно вам в облаке по умолчанию