До сих пор я активно работал лишь с сервисами Amazon S3 и Amazon CloudFront в роли CDN. Для виртуализации серверов использовал сервис от Rackspace. А тут появился клиент, которому понадобился не только виртуальный сервер, да не в Америке, а в Европе, так еще и возможность стрессоустойчивости при помощи распределения нагрузки (Load Balancing). Поэтому решил, наконец, испытать и другие сервисы Амазона, такие как Amazon EC2 и Elastic Load Balancing.
AddThis Smart Layers
среда, 31 августа 2011 г.
среда, 30 марта 2011 г.
Оптимизация сервера и сайта
В последнее время пришлось довольно серьезно подучить матчасть в области оптимизации вебсервера.
Появился новый клиент, с довольно таки большим сайтом на Joomla.
Основных проблем было две:
1. При нагрузке в 300 одновременных заходах сервер не справлялся с нагрузкой и просто падал.
2. Даже когда сервер не падал, среднее время загрузки страницы составляло не менее 40 секунд.
Появился новый клиент, с довольно таки большим сайтом на Joomla.
Основных проблем было две:
1. При нагрузке в 300 одновременных заходах сервер не справлялся с нагрузкой и просто падал.
2. Даже когда сервер не падал, среднее время загрузки страницы составляло не менее 40 секунд.
Метки:
оптимизация сайта
,
apache
,
joomla
,
mysql
,
nginx
вторник, 12 октября 2010 г.
Как подключиться к MSSQL серверу из PHP
У нас появилась задача - подключаться из Magento к удаленному MSSQL серверу и тянуть с него некие данные.
Так как Magento стоит на Linux сервере, это оказалось не такой уж простой задачкой.
Нужно было установить расширение, которое позволяло бы PHP подключаться к MSSQL.
Так как Magento основана на Zend Framework, родным для нее будет подключение при помощи PDO_DBLIB драйвера, который, разумеется никогда на Linux серверах по умолчанию не устанавливается.
Чтобы установить этот драйвер для начала нужно установить сам PDO модуль. С ним проблем не возникло и при помощи
А вот
Сначала на то что он не может запустить компилятор.
Решил эту проблему радикально:
На этом он не успокоился и стал требовать чтобы был установлен пакет FreeTDS
С ним прошло все более ли менее гладко и встал он куда ему и указали.
Очередная попытка установить pdo_dblib снова не увенчалась успехом, конфигурационный файл ни в какую не хотел видеть где установлен FreeTDS, даже когда ему прописывали путь в ключе.
Помогло это:
Теперь снова нашлась причина чтобы не установиться. Видите ли ему версия PDO не нравится.
Решилось просто:
Только после этого этот несчастный драйвер позволил себя сконфигурировать и установить.
Танцы с бубном продолжались не менее 4 часов. Подопытный сервер практически не пострадал, за исключением того, что в процессе пришлось перекомпилировать apache+php чтобы убить "родную" поддержку PDO, с которой PDO_DBLIB ни в какую не хотел дружить и в последствии установить PDO через Pecl. После перекомпиляции apache нужно заново переконфигурировать Nginx. Но это уже мелочи жизни :-)
Апдейт: Данная шпаргалка действительна для PHP 5.2.x. Для PHP 5.3.x. есть новая шпаргалка, там процесс настройки сильно отличается.
Так как Magento стоит на Linux сервере, это оказалось не такой уж простой задачкой.
Нужно было установить расширение, которое позволяло бы PHP подключаться к MSSQL.
Так как Magento основана на Zend Framework, родным для нее будет подключение при помощи PDO_DBLIB драйвера, который, разумеется никогда на Linux серверах по умолчанию не устанавливается.
Чтобы установить этот драйвер для начала нужно установить сам PDO модуль. С ним проблем не возникло и при помощи
pecl install pdoон успешно установился.
А вот
pecl install pdo_dblibначал ругаться.
Сначала на то что он не может запустить компилятор.
Решил эту проблему радикально:
mount -o remount,exec,suid /tmp mount -o remount,exec,suid /var/tmp
На этом он не успокоился и стал требовать чтобы был установлен пакет FreeTDS
С ним прошло все более ли менее гладко и встал он куда ему и указали.
Очередная попытка установить pdo_dblib снова не увенчалась успехом, конфигурационный файл ни в какую не хотел видеть где установлен FreeTDS, даже когда ему прописывали путь в ключе.
Помогло это:
touch {path}/freetds/include/tds.h touch {path}/freetds/lib/libtds.a
Теперь снова нашлась причина чтобы не установиться. Видите ли ему версия PDO не нравится.
Решилось просто:
pecl install -n pdo_dblibт.е. с игнорированием зависимости от версии PDO.
Только после этого этот несчастный драйвер позволил себя сконфигурировать и установить.
Танцы с бубном продолжались не менее 4 часов. Подопытный сервер практически не пострадал, за исключением того, что в процессе пришлось перекомпилировать apache+php чтобы убить "родную" поддержку PDO, с которой PDO_DBLIB ни в какую не хотел дружить и в последствии установить PDO через Pecl. После перекомпиляции apache нужно заново переконфигурировать Nginx. Но это уже мелочи жизни :-)
Апдейт: Данная шпаргалка действительна для PHP 5.2.x. Для PHP 5.3.x. есть новая шпаргалка, там процесс настройки сильно отличается.
понедельник, 27 сентября 2010 г.
Восстановление большой базы данных MySQL из дампа
На днях нужно было локально, в Windows, запустить рабочую копию сайта клиента. После всех чисток, объем базы данных составлял "всего" 1.5 гига.
Так как локально стоит Wamp, из доступных средств для заливки sql дампа такого размера был только phpmyadmin. Тот же EMS MySQL Manager даже слышать не хотел ничего о том чтобы открыть 1.5 гиговый скрипт.
Так как локально стоит Wamp, из доступных средств для заливки sql дампа такого размера был только phpmyadmin. Тот же EMS MySQL Manager даже слышать не хотел ничего о том чтобы открыть 1.5 гиговый скрипт.
вторник, 13 апреля 2010 г.
В поисках 503 ошибки
Пара клиентов часто жалуются на 503 ошибку (service unavailable) при заходе на свои сайты.
Поверхностное изучение показало что ошибка может быть из-за того что с одного IP было слишком много соединений.
В принципе, так как на сервере стоит Nginx, то в теории может такое быть, так как все запросы Apache поступают от него с одним и тем же IP.
Копнув глубже понял, что nginx тут не причем.
В конце концов дождался момента когда в очередной раз стала появляться ошибка 503 и полез смотреть error_log апача. И вот что там было:
Request exceeded the limit of 10 internal redirects due to probable configuration
error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
Т.е. проблема то не столько в сервере, сколько в скриптах которые эти клиенты гоняют у себя.
Но ведь главное то было волну нагнать, заставить меня перелопачивать гугль и кропотливо изучать логи сервера.
Поверхностное изучение показало что ошибка может быть из-за того что с одного IP было слишком много соединений.
В принципе, так как на сервере стоит Nginx, то в теории может такое быть, так как все запросы Apache поступают от него с одним и тем же IP.
Копнув глубже понял, что nginx тут не причем.
В конце концов дождался момента когда в очередной раз стала появляться ошибка 503 и полез смотреть error_log апача. И вот что там было:
Request exceeded the limit of 10 internal redirects due to probable configuration
error. Use 'LimitInternalRecursion' to increase the limit if necessary. Use 'LogLevel debug' to get a backtrace.
Т.е. проблема то не столько в сервере, сколько в скриптах которые эти клиенты гоняют у себя.
Но ведь главное то было волну нагнать, заставить меня перелопачивать гугль и кропотливо изучать логи сервера.
вторник, 16 марта 2010 г.
Облака, белогривые лошадки...
Решил поближе познакомиться с технологиями Cloud Computing.
Для этого подписался на Amazon Web Services и на Rackspace Cloud.
Для теста загрузил все файлы шаблона одного из наших сайтов, Magento-Israel на "облако" Amazon S3.
Все изображения из каталога товаров забросил на "облако" Rackspace при помощи расширения One Pica Image CDN.
Была еще идея базу данных тоже сделать облачной, но это выходит экономически невыгодно для такого маленького сайта.
Следующим этапом будет тестирование облачных серверов. Хочу сделать кластер из трех серверов, DNS, MySQL и Apache+Nginx.
Для этого подписался на Amazon Web Services и на Rackspace Cloud.
Для теста загрузил все файлы шаблона одного из наших сайтов, Magento-Israel на "облако" Amazon S3.
Все изображения из каталога товаров забросил на "облако" Rackspace при помощи расширения One Pica Image CDN.
Была еще идея базу данных тоже сделать облачной, но это выходит экономически невыгодно для такого маленького сайта.
Следующим этапом будет тестирование облачных серверов. Хочу сделать кластер из трех серверов, DNS, MySQL и Apache+Nginx.