NullPointerException
s - исключения, возникающие при попытке использовать ссылку, которая указывает на отсутствие местоположения в памяти (null), как если бы она ссылалась на объект. Вызов метода по нулевой ссылке или попытка получить доступ к полю нулевой ссылки вызовет функцию NullPointerException
. Они наиболее распространены, но другие способы перечислены на странице NullPointerException
javadoc.
Вероятно, самый быстрый пример кода, который я мог бы придумать для иллюстрации NullPointerException
, be:
public class Example {
public static void main(String[] args) {
Object obj = null;
obj.hashCode();
}
}
В первой строке внутри main
я явно устанавливаю ссылку Object
obj
равной null
. Это означает, что у меня есть ссылка, но она не указывает на какой-либо объект. После этого я пытаюсь обработать ссылку так, как если бы она указывала на объект, вызывая метод на нем. Это приводит к NullPointerException
, потому что нет кода для выполнения в местоположении, на которое указывает ссылка.
(Это техничность, но я думаю, что она упоминает: ссылка, которая указывает на null, равна 't то же, что и указатель C, указывающий на недопустимую ячейку памяти. Нулевой указатель буквально не указывает на в любом месте , который отличается от указаний на местоположение, которое оказывается недопустимым.)
То, в чем Вы нуждаетесь, является некоторой информацией о Планировании мощностей..
Планирование мощностей является процессом планирования роста и прогнозирования пиковых периодов использования для встречи требуемой производительности приложения и системы. Это включает обширное тестирование производительности для установления пропускной способности использования и транзакции ресурса приложения при загрузке. Во-первых, Вы измеряете число посетителей, которых в настоящее время принимает сайт и сколько спроса каждый пользователь помещает на сервере, и затем Вы вычисляете вычислительные ресурсы (ЦП, RAM, дисковое пространство и сетевая пропускная способность), которые необходимы для поддержки текущих и будущих уровней использования.
Если у Вас есть доступ к некоторым профильным инструментам (таким как те, которые в выпуске Комплекта Команды Visual Studio), можно попытаться настроить сервер тестирования и выполнение некоторых синтетических запросов против него и видеть, существует ли какая-либо определенная часть кода, берущего необоснованно долго для выполнения. Необходимо, вероятно, проверить некоторые графики ЦП и использования памяти со временем прежде, чем сделать это, видеть, может ли это даже быть это. (Число одинаково к UNIX "среднее число загрузки" могло быть полезной метрикой, я не знаю, имеет ли Windows что-нибудь как он. В основном среднее количество потоков, которые хотят процессорное время для каждого интервала.)
Также проверьте очевидное, что у Вас не заканчивается пропускная способность.
Мера, мера, мера. Rico Mariani всегда говорит это, и он прав.
Измерьте req/sec, RAM, ЦП, Сессии, и т.д.
Можно придумать кэширующуюся стратегию (Кэширование вывода, кэширование данных, кэширование зависимостей, и так далее.)
См. также, как Ваш SQL Server делает..., индексы являются хорошим местом для запуска, но не единственная вещь посмотреть на..
На тех аппаратных средствах приложение.NET должно смочь служить приблизительно 200-400 запросам в секунду. Если у Вас есть только несколько сотен пользователей, я сомневаюсь, что Вы видите даже 2 запроса в секунду, таким образом, я думаю, что у Вас есть большая способность на том поле, даже с выполнением SQL-сервера.
Без знают все детали, я сказал бы "нет", Вы не будете видеть повышения производительности путем добавления серверов.
Между прочим, если бы Вы не используете Выходной кэш, я запустил бы там.