Взгляд на использование SQL Server Profiler и монитора производительности Windows Server прослеживает вместе. SQL Server 2005 позволяет Вам взаимосвязывать эти два файла вместе. Эта статья описывает, как сделать это хорошо.
В дополнение к этому, Если Вы используете имя приложения = параметр в Вашей строке подключения SQL Server, можно получить, это в Профилировщике прослеживает & используйте это в качестве способа передать информацию из Вашего приложения asp.net/asp как то, какое имя файла выполняется.
Для PHP существует 2 важных вещи, которые увеличат способность:
Для Apache:
Можно также пойти, насколько рассмотреть переключение от Apache до Lighttpd или Nginx. Я люблю Apache. Я использую дурака из многих из, его - расширенные функции. Я принимаю его издержки, потому что мне нужно в том, что они предлагают. Для общего стека LAMP это - больше, чем необходимо и трата ресурсов.
Для MySQL:
Другие инструменты достойные рассмотрения являются mk-visual-explain
Я процитировал 10 больших ссылок. Эти вещи должны получить Вас гул. Сообщает нам, как это складывается.
Несколько вещей приходят на ум.
Кэш кода операции всегда является хорошей идеей. Я предпочитаю http://eaccelerator.net/ по APC. Если Вы не разрабатывали с APC, по пути пытаясь включить его, является почти всегда болезненным. Eaccelerator, в то время как не, поскольку воображение просто, кажется, работает.
Обратный прокси является также хорошей идеей, но необходимо следить за Использованием оперативной памяти. Я нахожу, что Apache 2.2 с mpm-рабочим поднимает изрядное количество RAM на своем собственном. В Вашем случае я рекомендовал бы что-то легче как Nginx и выполнил бы Apache с PHP как FASTCGI или просто оставил бы его согласно процессу. Идея с использованием Лака, Сквида, Nginx, и т.д. состоит в том, чтобы сделать, чтобы они служили статическому содержанию, соглашению с пользовательскими соединениями, и только передали запросы PHP Apache, который Вы рассматриваете как сервер приложений.
При выполнении довольно последней версии Mysql 5.1 как по крайней мере 5.1.24 у Вас теперь есть доступ к sub вторым медленным журналам. Я запустил бы long_query_time в 1 или 2 и затем понизил бы его до 0,5, поскольку Вы разобрались с действительно длинными. Существует также много общей информации о настройке о сети для Mysql, но у Вас нет RAM, чтобы сделать много. Вы увеличили какой-либо то, чтобы сходить со значения по умолчанию? Большая часть значения по умолчанию my.cnf файлы настроена для использования приблизительно 64 МБ RAM. Это очень наименьшее я повысил бы key_buffer с 16 МБ до 64 МБ.
Дополнительно Вы используете таблицы Myisam или Innodb? Если Вы сохраните сессию в DB, то Вы захотите изменить таблицу сессии на Innodb (или сделать это cookie вместо этого), а не оставите это таблицей Mysiam, которая действительно представляет в виде таблицы блокировку уровня, а не блокировку уровня строки. В основном любая таблица, которая является большим количеством больше чем 20%-й записи к 80%-м чтениям, является кандидатом на перемещение в Innodb. Помните, что необходимо будет сбалансировать сумму RAM между таблицами Myisam и таблицами Innodb, потому что буферы для каждого настроены отдельно.
И наконец еще 512 МБ RAM имели бы большое значение в Вашей установке или даже еще 512 МБ VPS для выполнения Mysql в том, если это более дешево или примерно та же цена. Я на самом деле склонился бы к второму экземпляру, потому что это удвоит доступный диск IO. Одной из проблем с серверами VPS является Ваш IO, не защищен от других людей на том же физическом сервере.
Хм мое сообщение весь вид легкомысленных, но дает Вам много мест для взгляда.Удачи.
В низкой ситуации с памятью (512 МБ является низким, для сервера интенсивного трафика) это достойно рассмотрения Ваш выбор механизма DB и веб-сервера.
Lighttp легче из поля, чем Apache может обычно делаться после большой тонкой настройки, и существуют более легкие опции, чем это даже. Это, конечно, не возможно, если существуют функции Apache, Вы зависите от этого, не поддержка в других серверах.
sqlite намного более труден, чем MySQL, и быстрее при многих условиях также. Проверьте, поддерживает ли механизм, который Вы используете, это, а также и если он действительно дает ему попытку.
Другая опция, легкая опция, состоит в том, чтобы получить больше RAM в VM, если можно предоставить его.
Переместите свои файлы сессии PHP в tmpfs, используйте APC (или другой) и удалите все модули PHP, в которых Вы не нуждаетесь. Удалите все модули Apache, в которых Вы не нуждаетесь/используете.
Создать tmpfs (каталог в RAM!)
mkdir /tmpfs; chmod 777 /tmpfs
mount -t tmpfs -o size=256M tmpfs /tmpfs
В/etc/fstab добавляют строку ниже для создания его на перезагрузке!
tmpfs /tmpfs tmpfs size=256m,mode=0777 0 0
В /etc/apache2/php.ini корректируются для хранения сессий в RAM (tmpfs)!
session.save_handler = files
session.save_path = "/tmpfs"
Примечание: С Вашими файлами PHP И файлами сессии в RAM Вы едва касаетесь диска!
Используйте expires_module в апаче, таким образом, браузеры будут кэшировать большинство вещей.
ExpiresActive On
ExpiresDefault "access plus 90 days"
ExpiresByType image/gif "access plus 90 days"
ExpiresByType image/ico "access plus 90 days"
ExpiresByType image/png "access plus 90 days"
ExpiresByType image/jpeg "access plus 90 days"
ExpiresByType image/x-icon "access plus 90 days"
ExpiresByType text/css "Access plus 90 days"
ExpiresByType text/html "Access plus 90 days"
ExpiresByType application/x-shockwave-flash "Access plus 90 days"
ExpiresByType application/x-javascript "Access plus 90 days"
Не используйте .htaccess файлы! Вместо этого трудно кодируйте их в vhost файле конфигурации! Решительно устранит/уменьшит дисковые проверки на все запросы HTTP... это действительно складывает.
Options FollowSymLinks
AllowOverride None
Пример .htaccess используется в Вашем vhost.conf файле...
<Directory /home/user/www/site.com/secure>
Order Allow,Deny
Deny from All
</Directory>
Вне больших предложений здесь, нужно отметить, что все VPS' не создаются равные. По моему опыту, PHP оказался тяжелым ЦП.
Сравнительный тест AB Wordpress (ab-n 500-c 25 http://domain.com/index.php) nginx/apc/phpfpm/mysql (локального) на EC2, приведшем к ~2 запросам/секунда на их начальном уровне "2 ГБ RAM/1, Вычисляет Сервер Единицы".
Тот же Контрольный прогон против того же точного стека (развернутый сценарием на идентичной ОС) на 512 МБ Rackspace Cloudserver возвращает ~80 req/second. Так 4x Меньше поршня, 40x производительность в этом элементарном эксперименте.
Просмотр вершины во время AB, Вы видите, что EC2 просто не мог обработать параллелизм, и сразу поразит 100%-ю загрузку ЦП и запрется. Просмотр вершины на Сервере 512 МБ (виртуализировал четырехъядерный ЦП) во время того же сравнительного теста, ядра поразит Загрузку на ~60% и гладко обработает сравнительный тест.
VPS's чрезвычайно легко вращать и выключить без обязательства, не повреждает помещать инфраструктуру, в которой находится Ваш VM/VPS к тесту!
РЕДАКТИРОВАНИЕ 1: Кроме того, "Высокий ЦП EC2" Маленький Экземпляр только смог привести к ~10/req секунде с ЦП, все еще являющимся узким местом. Мое заключение состояло в том, что Вы жертвуете производительностью за устойчивость/устойчивость с EC2, и существует, конечно, много примеров использования, которые призывают к такой среде.