Как доказать, что код не сломан, а аппаратный? - PullRequest
2 голосов
/ 14 марта 2009

Я уверен, что это повторяется везде. Вы можете «чувствовать», что сеть медленная, или машина, или медленная, или что-то в этом роде. Но журналы сервера / шасси ничего не показывают, так что ИТ не верит вам. Чем ты занимаешься?

Ваши регрессии берут в два раза больше ... но этого недостаточно Хорошо, вы передаете 100 ГБ, используя dd и т. Д., Но ... этого недостаточно. Хорошо, вы помещаете сервер в другое шасси на 2 недели, он работает нормально ... но .. этого недостаточно ...

так КАК вы получаете ЭТО, чтобы заменить шасси?

Более конкретно: Есть ли какой-нибудь набор, который я могу запустить на двух установках (предполагается, что они идентичны), которые могут показать разницу в доступе к сети / процессору / диску ... который будет верить?

Ответы [ 5 ]

5 голосов
/ 14 марта 2009

Компьютеры не стареют и не замедляются так же, как мы. Если ваш сервер работает медленнее - на самом деле медленнее, а не просто чувствует себя медленнее, потому что все другие компьютеры, которые вы используете, становятся быстрее - тогда есть причина, и, возможно, вы сможете это исправить. Я бы попытался очистить место на диске, удалить фрагментацию диска и проверить, какие другие процессы запущены (возможно, кто-то добавил больше приложений в систему, и вы просто не получаете столько циклов).

Если ваше приложение использует базу данных, вы можете проанализировать производительность вашего запроса и посмотреть, в порядке ли некоторые индексы. Запросы, которые хорошо работают, когда у вас мало данных, могут начать занимать много времени, так как объем данных увеличивается, если им приходится использовать сканирование таблиц. Будучи бывшим специалистом по информационным технологиям, я также не хотел бы бросать аппаратные средства на проблему, потому что кто-то говорит мне, что система замедляется. Я хотел бы знать, что изменилось, и посмотреть, смогу ли я заставить систему работать так, как она должна быть. Если приложение просто превзошло аппаратное обеспечение - после того, как вы сделали подходящую оптимизацию - тогда обновление является разумным выбором.

4 голосов
/ 14 марта 2009

Запустите стандартный набор тестов. Посмотрите, определяет ли он память, процессор, шину или диск по сравнению с «работающим» аналогичным компьютером.

См. http://en.wikipedia.org/wiki/Benchmark_(computing)#Common_benchmarks для некоторых советов.

2 голосов
/ 14 марта 2009

Единственный способ доказать что-то - провести строгий аудит.

Теперь традиционно мы должны поддерживать постоянную систему между двумя различными наборами, изменяя интересующую нас переменную. В этом случае переменная - это оборудование, на котором работает ваш код. Проще говоря, вы должны проверять работу своего программного обеспечения на двух разных наборах оборудования, один из которых - оборудование, которое вас не устраивает. И увидеть разницу.

Теперь, если вы хотите сделать это правильно, что, я уверен, вам нужно, вам сначала нужно выдвинуть нулевую гипотезу , что-то вроде:

"Медлительность приложения не связанные с конкретным оборудованием, которое мы используете "

И теперь вы приступили к опровержению этой гипотезы в пользу альтернативной гипотезы . После того, как вы собрали достаточно результатов, вы можете применить к ним статистический анализ, чтобы решить, являются ли какие-либо различия статистически значимыми . Существуют анализы, чтобы выяснить, сколько данных вам нужно, а затем сравнить два набора, чтобы определить, случайны ли различия или нет (что опровергнет вашу нулевую гипотезу). Тип тестов, которые вы проводите, будет в основном зависеть от ваших данных, но умные люди составили контрольных списков, чтобы помочь нам принять решение .

0 голосов
/ 16 марта 2009

Запустите perfmon.msc из Пуск / Запуск в Windows 2000 до Vista. Затем просто добавьте счетчики для процессора, диска и т. Д.

Для запросов SQL вы должны захватить фактические запросы, а затем запустить их вручную, чтобы увидеть, если они медленные.

Например, если вы используете SQL Server, запустите профилировщик из Tools, SQL Server Profiler. Затем выполните некоторые операции в своей программе и посмотрите на захват для любых подозрительных вызовов базы данных. Скопируйте и вставьте один из запросов в новое окно запросов в Management Studio и запустите его.

Для работы в сети вы должны попытаться искусственно ограничить скорость вашей сети, чтобы увидеть, как она влияет на ваш код (например, Traffic Shaper XP - простой ограничитель бесплатного программного обеспечения).

0 голосов
/ 14 марта 2009

Похоже, ваша основная проблема заключается в том, что вас слушают ИТ, но необработанные технические данные могут не убедить нужных людей. Вам может помочь резервное копирование в бизнесе, а это значит говорить о деньгах.

К счастью, обе платформы уже содержат общий программный продукт - само приложение - предназначенный для того, чтобы зарабатывать или экономить деньги для кого-то. Почему бы не измерить, как быстро это можно сделать, например? сколько времени занимает обработка заказа?

Измеряя, сколько времени ваше приложение тратит на обработку каждой подзадачи или источника данных, вы можете получить приблизительное представление об используемом базовом оборудовании. Запись в локальную базу данных или обработка структуры данных, превышающей объем ОЗУ, повлияет на диск, сетевые вызовы будут влиять на сетевое оборудование, вычисления, связанные с ЦП, будут влиять на него.

Эти данные никогда не будут такими точными, как эталонные, и они могут потребовать дорогостоящего кодирования, но их легче перевести в денежные выражения. Возможности Log4j NDC и MDC и Springs AOP могут быть хорошими вспомогательными инструментами для вас.

...