Есть ли способ заставить Openstack запускать сценарий сразу после создания или удаления виртуальной машины (как для Windows, так и для Linux)? Этот сценарий должен запускаться на самом хосте, а не на виртуальной машине или гостевой системе, которую он только что создал.
Цель этого состоит в том, чтобы автоматически добавить / удалить хост с нашего сервера Nagios. Прямо сейчас мы добавляем / удаляем хосты на Nagios вручную, но это не идеально, поскольку мы создаем / удаляем виртуальные машины несколько раз в день.
Мы можем легко добавить хост на Nagios, используя следующий вызов API: но не видели абсолютно никакого движения. Вот ситуация:
Я установил блок EC2 бесплатного уровня в качестве промежуточной машины на Ubuntu 14.04 с LEMP, в частности, Nginx и PHP7 с WordPress. Мы создали сайт, все работает нормально. Его TTFB составляет 505 миллисекунд.
Я установил блок облачных вычислений бесплатного уровня в качестве производственной машины с той же конфигурацией, но TTFB составляет 14 секунд. Знайте, что спецификации на коробке Google немного лучше, чем на EC2. g1-small (1 виртуальный ЦП, 1,7 ГБ памяти) по сравнению с t2-micro (1 виртуальный ЦП, 1 ГБ памяти). SSD с обеих сторон.
Я пробовал много вещей, включая многие методы диагностики проблем TTFB, описанные в этом ответе https://serverfault.com/a/350422 . Я также пробовал увеличить объем памяти для PHP и WordPress. Я' Я пробовал устанавливать пакеты и плагины, которые люди предлагали для оптимизации производительности. Я особенно борюсь с тем, что моему промежуточному экземпляру ничего из этого не нужно. Прежде чем вы спросите: «Почему бы вам просто не сделать все это на AWS», знайте, что использование Google Cloud Compute для производства является обязательным требованием для этого проекта.
В моих обсуждениях с людьми кто-то сказал, что Google Cloud не имеет сброса вывода для обслуживания содержимого до завершения ответа. Может ли кто-нибудь подтвердить?
Заранее благодарю за любую информацию, которую вы можете предложить, чтобы указать мне правильное направление для решения этой проблемы. Кроме того, дайте мне знать любые другие детали, которые я могу предложить, чтобы упростить решение этой проблемы.
ИЗМЕНИТЬ ОДИН: Отвечая на вопросы ниже. Большое спасибо за предложение помощи.
Находятся ли два сервера в одном географическом местоположении? Насколько велика разница?
Экземпляр EC2 находится на востоке США или в Вирджинии. Экземпляр GCE находится в US-West1a, который, как я полагаю, находится в Орегоне. Я нахожусь в Нью-Йорке, поэтому географической разницы недостаточно, чтобы оправдать 14-секундный TTFB. Кроме того, инструменты, которые я использовал, имеют географическое положение, такое как Даллас (разумная середина между двумя городами), и также сообщают о TTFB за 14 секунд.
Первое, что нужно выяснить, это где задержка. Измените свой вопрос, включив> изгиб веб-сайта Google, соответствующую запись журнала доступа Nginx, любую> соответствующую запись журнала ошибок Nginx и журналы доступа / ошибок PHP. Необходимо включить доступ к PHP> журналам. Также посмотрите «сверху», пока происходит завиток, и сделайте> типичный снимок экрана. Наконец, поделитесь тестами webpagetest.org для> обеих сред, чтобы продемонстрировать проблему, запутанные, если ваши доменные имена> являются секретными - поисковые роботы все равно находят все домены. - Тим 3 часа назад
cURL
time_namelookup: 0.
time_connect: 0,078n
time_appconnect: 0,000n
time_pretransfer: 0,078n
time_redirect: 0,000n
time_starttransfer: 13.469n
time_total: 13.469n
У меня недостаточно очков репутации, чтобы разместить изображение или ссылку на другое изображение, но когда я запускаю его, появляется всплывающее окно php-fpm7.0 и mysqld.
PID USER PR NI VIRT RES SHR S% CPU% MEM TIME + КОМАНДА 24625 www-data 20 0 374680 43352 30376 S 0,7 2,5 0: 00,90 php-fpm7.0 21244 mysql 20 0 870388 71088 11012 S 0.3 4.1 0: 10.57 mysqld
Запись в журнале доступа Nginx
[07 / May / 2017: 06: 01: 58 +0000] "GET / HTTP / 1.1" 200 58528 "-" "curl / 7.35.0"
Запись в журнале ошибок Nginx
Здесь ничего нового с этим запросом
Ничего в журналах PHP-FPM.
Ничего из этого запроса, но я сделал запрос браузера до этого, и вот что в медленном журнале (я выставил окно на 5 секунд):
[07-May-2017 06:01:48] [pool www] pid 24625
script_filename = /var/www/html/wordpress/index.php
[0x00007fad55e12810] mysqli_real_connect() /var/www/html/wordpress/wp-
includes/wp-db.php:1540
[0x00007fad55e126f0] db_connect() /var/www/html/wordpress/wp-includes/wp-db.php:658
[0x00007fad55e12620] __construct() /var/www/html/wordpress/wp-content/themes/xxxx/inc/artist-products.php:7
[0x00007fad55e12590] edb_db_init() /var/www/html/wordpress/wp-content/themes/xxxx/inc/db/items.php:258
[0x00007fad55e124d0] edb_get_product_link() /var/www/html/wordpress/wp-content/themes/xxxx/inc/artist-products.php:23
[0x00007fad55e123c0] edb_display_frontpage_items() /var/www/html/wordpress/wp-content/themes/xxxx/page-templates/home.php:95
[0x00007fad55e121e0] [INCLUDE_OR_EVAL]() /var/www/html/wordpress/wp-includes/template-loader.php:74
[0x00007fad55e12140] [INCLUDE_OR_EVAL]() /var/www/html/wordpress/wp-blog-header.php:19
[0x00007fad55e120a0] [INCLUDE_OR_EVAL]() /var/www/html/wordpress/index.php:17
https://www.screencast.com/t/vxHTCcyf
https: //www.screencast .com / t / 22OXgA7T
Самым очевидным вариантом, который можно попробовать, было бы написать barebones-скрипт hello world php> и измерить его ttfb, если вы еще этого не сделали. Если это где-то около 14, то> у вас проблема, не имеющая ничего общего с wordpress или базой данных. > "Google Cloud не делает" применяется к ответам HTTP> Google App Engine, которые возвращаются блоком, поэтому это не применимо к> экземплярам вычислений.
Да, я сделал это. Hello World и другие статические файлы отвечают быстро. PHPInfo также быстро реагирует. Если я правильно помню, все простые и статические файлы были около 700 мс TTFB. Благодарим за пояснение, касающееся промывки выходных данных только для App Engine. По крайней мере, я знаю, что есть простое решение, которое мне просто не хватает.
Единственное, что я видел, что дает мне что-то, с чем можно работать, - это медленное ведение журнала PHP.
[07-May-2017 00:56:39] [pool www] pid 24793
script_filename = /var/www/html/wordpress/index.php
[0x00007fad55e14810] mysqli_real_connect() /var/www/html/wordpress/wp-includes/wp-db.php:1540
[0x00007fad55e146f0] db_connect() /var/www/html/wordpress/wp-includes/wp-db.php:658
[0x00007fad55e14620] __construct() /var/www/html/wordpress/wp-content/themes/xxxx/inc/artist-products.php:7
[0x00007fad55e14590] edb_db_init() /var/www/html/wordpress/wp-content/themes/xxxx/inc/db/items.php:258
[0x00007fad55e144d0] edb_get_product_link() /var/www/html/wordpress/wp-content/themes/xxxx/inc/artist-products$
[0x00007fad55e143c0] edb_display_frontpage_items() /var/www/html/wordpress/wp-content/themes/xxxx/page-templat$
[0x00007fad55e141e0] [INCLUDE_OR_EVAL]() /var/www/html/wordpress/wp-includes/template-loader.php:74
[0x00007fad55e14140] [INCLUDE_OR_EVAL]() /var/www/html/wordpress/wp-blog-header.php:19
[0x00007fad55e140a0] [INCLUDE_OR_EVAL]() /var/www/html/wordpress/index.php:1
Это заставило меня подумать, что запросы к базе данных выполняются медленно, но я установил плагин мониторинга запросов для WP, и все запросы также отображаются как выполняющиеся быстро.
Наиболее вероятной причиной задержки является разница в базовой инфраструктуре между AWS и GCP - в облачном мире спецификации не всегда отражают реальную производительность, и использование самого дешевого набора типов инстансов является никогда не является хорошей идеей, если вы хотите измерить производительность.
Почти все аспекты производительности в GCP связаны с количеством процессоров - например, 2 ГБ сети на ядро процессора. Кроме того, в Google Cloud g1-micro
является машиной с общим ядром . Из ссылки:
Типы машин с общим ядром предоставляют один виртуальный ЦП, которому разрешено работать в течение некоторого времени на одном аппаратном гиперпотоке на центральном ЦП, на котором запущен ваш экземпляр.
На AWS
1159110] t2.micro классифицируется как burstable - что на первый взгляд похоже на модель общего ядра Google, но несколько отличается:
базовая производительность экземпляров T2 и способность к пакетному регулируются кредитами ЦП. Каждый экземпляр T2 постоянно получает кредиты ЦП, скорость которых зависит от размера экземпляра. Инстансы T2 накапливают кредиты ЦП, когда они простаивают, и используют кредиты ЦП, когда они активны. Кредит ЦП обеспечивает производительность полного ядра ЦП в течение одной минуты.
Чтобы выполнить истинное сопоставимое сравнение, я настоятельно рекомендую использовать более высокопроизводительные типы экземпляров с обеих сторон, чтобы гарантировать доступность ресурсов для Например, Amazon m3.medium
и Google n1-standard-1
- оба предоставляют 1 ЦП и 3,75 ГБ ОЗУ.
Чтобы удалить географию из вашего возможного списка виновных, я также разместит ваш экземпляр AWS на западе сша-2, который также находится в Орегоне - он может быть дальше от вашего местоположения, но, по крайней мере, вы будете тестировать два экземпляра, которые находятся на таком же расстоянии, а не один рядом и один далеко.
Я бы также попытался повторно создать экземпляры несколько раз, чтобы защититься от «шумных соседей» и аппаратных причуд - если вы используете управление конфигурацией (и если вы работаете в облаке, вам следует использовать) это должно быть пустяком.