четверг, 3 декабря 2009 г.

Тестирование сайта на нагрузку

Набор ссылок на сайты, которые умеют тестировать веб-сайты на нагрузку:

вторник, 1 декабря 2009 г.

Анализ выполнения SQL-запроса в MS Sql

А знаете ли вы, что в MS Sql можно использовать команду SET SHOWPLAN_ALL ON/OFF, чтобы посмотреть как именно выполняются запросы и, соответственно, вовремя что-то поправить для получения большей производительности. Использовать можно вот так:

USE [MusicInfo.old]
GO

SET SHOWPLAN_ALL ON
GO

SELECT artists.name, albums.title, albums.uid_album
FROM dbo.albums, dbo.artists
WHERE dbo.albums.uid_artists=artists.uid_artists and artists.name='Taylor Swift'
GO

SET SHOWPLAN_ALL OFF
GO
Результат выглядит вот так:



А подробнее о возвращаемых значениях можно почитать в MSDN.

пятница, 27 ноября 2009 г.

Как отлавливать лаги в программе


Стоит взять метод на вооружение:
Природа лагов может быть разной, но сейчас речь пойдет о внутрисерверных лагах. То есть когда процесс игрового сервера, вместо того чтобы быстро обрабатывать запросы игроков, длительно тупит, занимаясь чем-то непотребным.

Чтобы выяснить, чем же именно непотребным занимается сервер во время лагов, была сделана очень простая штука: lag detector. Это специальный thread, который каждые 50 миллисекунд просыпается и смотрит на счетчик внутреннего цикла основного рабочего потока. Если счетчик не менялся уже длительное время (например, 200 миллисекунд), то что-то не в порядке. Lag detector пишет в лог сообщение об ошибке и call stack основного потока.

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

воскресенье, 22 ноября 2009 г.

Отличие операции приведения типа от оператора as

По ссылке - подробнее, а основное вот:

Во-первых, поскольку результатом оператора «as» может быть null, целевым может быть только такой тип, который допускает значение null: либо ссылочный тип, либо Nullable тип-значение. Нельзя сделать «as int», это не имеет никакого смысла. Если аргумент не int, то каким должно быть возвращаемое значение? Выражение «as» всегда возвращает указанный тип, так что он должен быть типом, допускающим null.


Оператор «as» не станет делать изменяющие представление преобразования из short в nullable int, как стал бы оператор приведения. Аналогично, если у вас есть класс Alpha и несвязанный с ним класс Bravo, с пользовательским оператором преобразования из Bravo в Alpha, то «(Alpha)bravo» применит это преобразование, а «bravo as Alpha» – нет. Оператор «as» учитывает только ссылочные преобразования, и упаковку/распаковку типов-значений.

А то по незнанию можно и нарваться :)

среда, 11 ноября 2009 г.

Новое в .Net Framework 4 beta 2 (продолжение)

Thread-safe структуры данных .NET 4 (ч.2) - описание одной, но зато очень полезной структуры
Краткий обзор Parallel Extensions для .NET Framework - ну очень краткий, но все равно почитать стоит