Здравствуйте, AlexNek, Вы писали:
AN>Дошел я до метода который выжирает у меня время при приеме сообщений, а дальше куда рыть? AN>Вот данный вызов занимает больше 20 сек. AN>
Здравствуйте, ixor, Вы писали:
I>Здравствуйте, AlexNek, Вы писали:
I>Добавлю свои 5 копеек. БД сильно чувствительна к фрагментации диска. Винда все таки I>Проверено вчера-сегодня.
А отчего трейс тогда показывает пальцем на Янус АТ? Я ведь не ищу хотя бы секунды.
Вот этот "громадный запрос", вместе с трейсом и обновлением меньше секунды. А кто сожрал еще 20?
DB INSERT INTO [topic_info]
(
[mid],
[gid],
[answers_count],
[answers_rate],
[answers_unread],
[answers_smile],
[answers_agree],
[answers_disagree],
[answers_me_unread],
[answers_marked],
[answers_last_update_date],
[answers_mod_count],
[this_rate],
[this_smile],
[this_agree],
[this_disagree],
[this_mod_count]
)
SELECT
[m].[mid] as [ID],
[m].[gid] as [ForumID],
(
SELECT
Count(*)
FROM
[messages] [t1]
WHERE
[m].[mid] = [t1].[tid]
) as [c4],
(
SELECT
Sum([r].[rate] * [r].[rby])
FROM
[rating] [r]
INNER JOIN [messages] [t2] ON [r].[mid] = [t2].[mid]
WHERE
[t2].[tid] = [m].[mid] AND [r].[rate] > 0
) as [c5],
(
SELECT
Count(*)
FROM
[messages] [im]
WHERE
[m].[mid] = [im].[tid] AND NOT ([im].[IsRead] = 1)
) + CASE
WHEN [m].[IsRead] = 1 THEN 0
ELSE 1
END as [c6],
(
SELECT
Count(*)
FROM
[rating] [r1]
INNER JOIN [messages] [t3] ON [r1].[mid] = [t3].[mid]
WHERE
[t3].[tid] = [m].[mid] AND [r1].[rate] = -2
) as [c7],
(
SELECT
Count(*)
FROM
[rating] [r2]
INNER JOIN [messages] [t4] ON [r2].[mid] = [t4].[mid]
WHERE
[t4].[tid] = [m].[mid] AND [r2].[rate] = -4
) as [c8],
(
SELECT
Count(*)
FROM
[rating] [r3]
INNER JOIN [messages] [t5] ON [r3].[mid] = [t5].[mid]
WHERE
[t5].[tid] = [m].[mid] AND [r3].[rate] = 0
) as [c9],
(
SELECT
Count(*)
FROM
[messages] [im1]
LEFT JOIN [messages] [t6] ON [im1].[pid] = [t6].[mid]
WHERE
[m].[mid] = [im1].[tid] AND NOT ([im1].[IsRead] = 1) AND
[t6].[uid] = @p1
) as [c10],
(
SELECT
Count(*)
FROM
[messages] [im2]
WHERE
[m].[mid] = [im2].[tid] AND [im2].[IsMarked] = 1
) as [c11],
Coalesce((
SELECT
Max([t7].[dte])
FROM
[messages] [t7]
WHERE
[m].[mid] = [t7].[tid]
), [m].[dte]) as [c12],
(
SELECT
Count(*)
FROM
[moderatorials] [mod1]
LEFT JOIN [messages] [t8] ON [mod1].[MessageID] = [t8].[mid]
WHERE
[t8].[tid] = [m].[mid] AND ([t8].[LastModerated] IS NULL OR [mod1].[Create] > [t8].[LastModerated])
) as [c13],
(
SELECT
Sum(Cast([r4].[rate] as SmallInt) * [r4].[rby])
FROM
[rating] [r4]
WHERE
[m].[mid] = [r4].[mid] AND [r4].[rate] > 0
) as [c14],
(
SELECT
Count(*)
FROM
[rating] [r5]
WHERE
[m].[mid] = [r5].[mid] AND [r5].[rate] = -2
) as [c15],
(
SELECT
Count(*)
FROM
[rating] [r6]
WHERE
[m].[mid] = [r6].[mid] AND [r6].[rate] = -4
) as [c16],
(
SELECT
Count(*)
FROM
[rating] [r7]
WHERE
[m].[mid] = [r7].[mid] AND [r7].[rate] = 0
) as [c17],
CASE
WHEN [m].[LastModerated] IS NULL
THEN (
SELECT
Count(*)
FROM
[moderatorials] [t9]
WHERE
[m].[mid] = [t9].[MessageID]
)
ELSE (
SELECT
Count(*)
FROM
[moderatorials] [mod2]
WHERE
[m].[mid] = [mod2].[MessageID] AND [mod2].[Create] > [m].[LastModerated]
)
END as [c18]
FROM
[messages] [m]
WHERE
[m].[tid] = 0 AND [m].[mid] IN (4385578, 4385581)
Здравствуйте, AlexNek, Вы писали:
AN>Дошел я до метода который выжирает у меня время при приеме сообщений, а дальше куда рыть? AN>Вот данный вызов занимает больше 20 сек.
... AN>При передаче, время теперь прыгает от 1 секунды до 24, но пока не добрался до самого медленного метода
Вот идея появилась. Кто посоветует хороший бесплатный TCP/HTTP сниффер с временным протоколом?
Вот списочек нашел http://www.securitylab.ru/software/1272/
Похоже все хвалят этот http://www.wireshark.org/
Здравствуйте, _Raz_, Вы писали:
_R_>Здравствуйте, AlexNek, Вы писали:
AN>>Вот идея появилась. Кто посоветует хороший бесплатный TCP/HTTP сниффер с временным протоколом? AN>>Вот списочек нашел AN>>http://www.securitylab.ru/software/1272/ AN>>Похоже все хвалят этот AN>>http://www.wireshark.org/ _R_>http://www.fiddler2.com/fiddler2/
Это получается уже стоит, я его для других целей ставил.
Но кроме того что команда выполняется 24 секунды и подробное описание запрашиваемых и полученных данных, больше ничего не смог выловить. То есть данный метод также не работает? Или там где то есть возможность увидеть когда пришел ответ? Что означает вертикальная черта на timeline? _R_>http://msdn.microsoft.com/en-us/library/ty48b824.aspx
Спасибки, надо будет попробовать, только почему там в версиях 3.0, 4.0, VS2005, VS2008, а 3.5 и VS2010 нет?
Здравствуйте, AlexNek, Вы писали:
AN>Здравствуйте, _Raz_, Вы писали:
_R_>>Здравствуйте, AlexNek, Вы писали:
AN>>>Вот идея появилась. Кто посоветует хороший бесплатный TCP/HTTP сниффер с временным протоколом? AN>>>Вот списочек нашел AN>>>http://www.securitylab.ru/software/1272/ AN>>>Похоже все хвалят этот AN>>>http://www.wireshark.org/ _R_>>http://www.fiddler2.com/fiddler2/ AN>Это получается уже стоит, я его для других целей ставил. AN>Но кроме того что команда выполняется 24 секунды и подробное описание запрашиваемых и полученных данных, больше ничего не смог выловить. То есть данный метод также не работает? Или там где то есть возможность увидеть когда пришел ответ? AN>Что означает вертикальная черта на timeline?
Это уже нашел
The vertical line indicates the time to first byte of the server's response (Timers.ServerBeginResponse).
Она у меня стоит ранее секунды. Что же делается все остальное время? _R_>>http://msdn.microsoft.com/en-us/library/ty48b824.aspx AN>Спасибки, надо будет попробовать, только почему там в версиях 3.0, 4.0, VS2005, VS2008, а 3.5 и VS2010 нет?
_R_>Разве этих данных мало? Вкладка Statistics
Вообще то этого не заметил, но похоже больше ничего не вытащить.
Остается открытым вопрос, отчего у тебя ServerDoneResponse 20мс, а у меня 23 сек
_R_>http://msdn.microsoft.com/en-us/library/ty48b824.aspx
Получил море информации от System.Net, но там нет ничего о времени.
Короче, опять в тупике. Известно только, что долго длится ответ от сервера и похоже только у меня.
Здравствуйте, AlexNek, Вы писали:
AN>ServerBeginResponse: 12:53:25.265 AN>ServerDoneResponse: 12:53:48.265
Я, конечно, не мегаспец в особенностях поведения WS over ASP.NET, но, по идее, сервер должен отдавать первый байт (в случае синхронного хендлера, а это для JanusAT так) только после полной отработки кода метода веб-сервиса. Т.е, получается, до тебя медленно едет респонс сервера с данными. Поскольку у меня подобное поведение не наблюдается, проблема где то на твоей стороне. Может фаервол какой кривой или сниффер.
... << RSDN@Home 1.2.0 alpha 5 rev. 1530 on Windows 7 6.1.7601.65536>>
Здравствуйте, AndrewVK, Вы писали:
AVK> AN>ServerBeginResponse: 12:53:25.265 AVK> AN>ServerDoneResponse: 12:53:48.265
AVK> Я, конечно, не мегаспец в особенностях поведения WS over ASP.NET, но, по идее, сервер должен отдавать первый байт (в случае синхронного хендлера, а это для JanusAT так) только после полной отработки кода метода веб-сервиса. Т.е, получается, до тебя медленно едет респонс сервера с данными. AVK>Поскольку у меня подобное поведение не наблюдается, проблема где то на твоей стороне. Может фаервол какой кривой или сниффер.
Я не знаю в чем проблема, надо будет еще на другом компе попробовать. Но если бы была софтовая проблема на моем компе, то все бы тогда тормозило или?
А тут еще такое — отправляешь сообщение в форум Тест, все быстро. Куда то в другое место — медленно. Или вот пользователи, также быстро запрашиваются. У меня такое чувство, что проблема с двух сторон. И найти ее удастся видимо, только случайно.
AVK>> Я, конечно, не мегаспец в особенностях поведения WS over ASP.NET, но, по идее, сервер должен отдавать первый байт (в случае синхронного хендлера, а это для JanusAT так) только после полной отработки кода метода веб-сервиса. Т.е, получается, до тебя медленно едет респонс сервера с данными. AVK>>Поскольку у меня подобное поведение не наблюдается, проблема где то на твоей стороне. Может фаервол какой кривой или сниффер. AN>Я не знаю в чем проблема, надо будет еще на другом компе попробовать. Но если бы была софтовая проблема на моем компе, то все бы тогда тормозило или? AN>А тут еще такое — отправляешь сообщение в форум Тест, все быстро. Куда то в другое место — медленно. Или вот пользователи, также быстро запрашиваются. У меня такое чувство, что проблема с двух сторон. И найти ее удастся видимо, только случайно.
Ты же опять на собственной сборке эксперементируешь?
Запусти ка на основной ветке, а? Чего-нибудь там намудрил и бага где-нибудь в неочевидном месте.
Затем опиши, что именно ты делаешь и каких результатов нужно добиться, попробую у себя воспроизвести.
С уважением, ixor.
... << RSDN@Home 1.2.0 alpha 5 rev. 0>>
Re[10]: Как разобраться со временем выполнения метода из Jan
Здравствуйте, ixor, Вы писали:
I>Здравствуйте, AlexNek, Вы писали:
AVK>>> Я, конечно, не мегаспец в особенностях поведения WS over ASP.NET, но, по идее, сервер должен отдавать первый байт (в случае синхронного хендлера, а это для JanusAT так) только после полной отработки кода метода веб-сервиса. Т.е, получается, до тебя медленно едет респонс сервера с данными. AVK>>>Поскольку у меня подобное поведение не наблюдается, проблема где то на твоей стороне. Может фаервол какой кривой или сниффер. AN>>Я не знаю в чем проблема, надо будет еще на другом компе попробовать. Но если бы была софтовая проблема на моем компе, то все бы тогда тормозило или? AN>>А тут еще такое — отправляешь сообщение в форум Тест, все быстро. Куда то в другое место — медленно. Или вот пользователи, также быстро запрашиваются. У меня такое чувство, что проблема с двух сторон. И найти ее удастся видимо, только случайно.
I>Ты же опять на собственной сборке эксперементируешь?
Безусловно, а как еще тестировать — только ежедневной работой. I>Запусти ка на основной ветке, а? Чего-нибудь там намудрил и бага где-нибудь в неочевидном месте.
Дело в том, что задержки имелись с самого начала использования РСДН. Начиная с отправления сообщений. Также они есть и в Авалоне (в Рояке вот только отчего то нет) и были в оригинальном Янусе, когда я его запустил в первый раз.
Собственно задержки и вынудили меня в первый раз пользовать оффлайн клиенты. Так что на прогу я бы грешить не стал, скорее тогда уж на конфигурацию компа. I>Затем опиши, что именно ты делаешь и каких результатов нужно добиться, попробую у себя воспроизвести.
Делаю обычную синхронизацию и отправку сообщений. При этом в форум Тест сообщения отправляются нормально.
Кстати, можешь поиграться с пустой установкой януса (никакого пользователя, никаких установок БД). И просто тупо перебирать все возможные действия.
Re[10]: Как разобраться со временем выполнения метода из Jan
Здравствуйте, AlexNek, Вы писали:
AN>А тут еще такое — отправляешь сообщение в форум Тест, все быстро. Куда то в другое место — медленно. Или вот пользователи, также быстро запрашиваются.
А ты попробуй вручную (через Request Builder фидлера) с разными параметрами и разными форумами. Может и удастся локализовать проблему.
... << RSDN@Home 1.2.0 alpha 5 (M6) rev. 1511>>
Re[10]: Как разобраться со временем выполнения метода из Jan
Здравствуйте, _Raz_, Вы писали:
R> AN>А тут еще такое — отправляешь сообщение в форум Тест, все быстро. Куда то в другое место — медленно. Или вот пользователи, также быстро запрашиваются.
R> А ты попробуй вручную (через Request Builder фидлера) с разными параметрами и разными форумами. Может и удастся локализовать проблему.
Я хотел вначале на виртуалке с новой инсталляцией побаловаться. Думаешь через через Request Builder фидлера может также получится?
Но я вот думаю что это мне даст, ну допустим при одной комбинации запросов будет задержка, а при другой нет. Все равно, раз у других нет задержки с этим никто разбираться не будет.
Вот как бы еще проверить, что запрос действительно сервер задерживает или у меня на компе какая то фигня. И отчего через браусер задержка только на запись. То бишь трасе роутом ничего не выловить.
Здравствуйте, AlexNek, Вы писали:
AN>Здравствуйте, ixor, Вы писали:
I>>Здравствуйте, AlexNek, Вы писали:
AVK>>>> Я, конечно, не мегаспец в особенностях поведения WS over ASP.NET, но, по идее, сервер должен отдавать первый байт (в случае синхронного хендлера, а это для JanusAT так) только после полной отработки кода метода веб-сервиса. Т.е, получается, до тебя медленно едет респонс сервера с данными. AVK>>>>Поскольку у меня подобное поведение не наблюдается, проблема где то на твоей стороне. Может фаервол какой кривой или сниффер. AN>>>Я не знаю в чем проблема, надо будет еще на другом компе попробовать. Но если бы была софтовая проблема на моем компе, то все бы тогда тормозило или? AN>>>А тут еще такое — отправляешь сообщение в форум Тест, все быстро. Куда то в другое место — медленно. Или вот пользователи, также быстро запрашиваются. У меня такое чувство, что проблема с двух сторон. И найти ее удастся видимо, только случайно.
I>>Ты же опять на собственной сборке эксперементируешь? AN>Безусловно, а как еще тестировать — только ежедневной работой. I>>Запусти ка на основной ветке, а? Чего-нибудь там намудрил и бага где-нибудь в неочевидном месте. AN>Дело в том, что задержки имелись с самого начала использования РСДН. Начиная с отправления сообщений. Также они есть и в Авалоне (в Рояке вот только отчего то нет) и были в оригинальном Янусе, когда я его запустил в первый раз. AN>Собственно задержки и вынудили меня в первый раз пользовать оффлайн клиенты. Так что на прогу я бы грешить не стал, скорее тогда уж на конфигурацию компа. I>>Затем опиши, что именно ты делаешь и каких результатов нужно добиться, попробую у себя воспроизвести. AN>Делаю обычную синхронизацию и отправку сообщений. При этом в форум Тест сообщения отправляются нормально.
Можно списать на мелкий размер форума.
AN>Кстати, можешь поиграться с пустой установкой януса (никакого пользователя, никаких установок БД). И просто тупо перебирать все возможные действия.
Поясни.
... << RSDN@Home 1.2.0 alpha 5 rev. 0>>
Re[12]: Как разобраться со временем выполнения метода из Jan
Здравствуйте, ixor, Вы писали:
i> AN>Здравствуйте, ixor, Вы писали:
i> I>>Здравствуйте, AlexNek, Вы писали:
i> AVK>>>> Я, конечно, не мегаспец в особенностях поведения WS over ASP.NET, но, по идее, сервер должен отдавать первый байт (в случае синхронного хендлера, а это для JanusAT так) только после полной отработки кода метода веб-сервиса. Т.е, получается, до тебя медленно едет респонс сервера с данными. i> AVK>>>>Поскольку у меня подобное поведение не наблюдается, проблема где то на твоей стороне. Может фаервол какой кривой или сниффер.
i> AN>>>Я не знаю в чем проблема, надо будет еще на другом компе попробовать. Но если бы была софтовая проблема на моем компе, то все бы тогда тормозило или? i> AN>>>А тут еще такое — отправляешь сообщение в форум Тест, все быстро. Куда то в другое место — медленно. Или вот пользователи, также быстро запрашиваются. У меня такое чувство, что проблема с двух сторон. И найти ее удастся видимо, только случайно.
i> I>>Ты же опять на собственной сборке эксперементируешь?
i> AN>Безусловно, а как еще тестировать — только ежедневной работой.
i> I>>Запусти ка на основной ветке, а? Чего-нибудь там намудрил и бага где-нибудь в неочевидном месте.
i> AN>Дело в том, что задержки имелись с самого начала использования РСДН. Начиная с отправления сообщений. Также они есть и в Авалоне (в Рояке вот только отчего то нет) и были в оригинальном Янусе, когда я его запустил в первый раз. i> AN>Собственно задержки и вынудили меня в первый раз пользовать оффлайн клиенты. Так что на прогу я бы грешить не стал, скорее тогда уж на конфигурацию компа.
i> I>>Затем опиши, что именно ты делаешь и каких результатов нужно добиться, попробую у себя воспроизвести.
i> AN>Делаю обычную синхронизацию и отправку сообщений. При этом в форум Тест сообщения отправляются нормально.
i> Можно списать на мелкий размер форума.
Но почему тогда только у меня это происходит, ведь без проги никаких данных о размере клиент не должен иметь, то бишь это знает только сервер.
i> AN>Кстати, можешь поиграться с пустой установкой януса (никакого пользователя, никаких установок БД). И просто тупо перебирать все возможные действия.
i> Поясни.
Я переместил старую конфигурацию и базу в другое место. Потом ввел какое то имя без пароля и 1. не задал пути к базе (2.создал новую базу SQLite). Затем запустил Янус и стал тупо перебирать все меню и комбинации. Ну там экспорт/импорт, фавориты, поиск, миграция базы и т.п. Задача была не допускать никаких вылетов. Уже не помню точно, но было их довольно много.