Веб-приложение заблокировано и загрузка процессора достигла 100% - PullRequest
2 голосов
/ 28 декабря 2010

У нас работает веб-приложение, в котором зарегистрировано около 100 пользователей. Все клиенты подключены к серверу с помощью websync. У меня было требование, чтобы сеанс всегда оставался активным, поэтому я восстанавливаю сеанс, когда он заканчивается.

Но через 3 или 4 дня я обнаружил, что процессор достиг 100% и приложение заблокировано, затем нам нужно перезапустить сервер, чтобы он заработал.

Спасибо за заранее предоставленные решения.

Спасибо

Ответы [ 3 ]

2 голосов
/ 07 февраля 2011

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

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

Не стесняйтесь общаться с нами напрямую, хотя, как предложил @Anton!

2 голосов
/ 28 декабря 2010

Почему бы вам просто не увеличить продолжительность сеанса, чтобы он был чрезвычайно длинным, а не восстанавливать его?

Запускали ли вы профилировщик на сервере, когда он достигает 100% ЦП?Это должно эффективно сказать вам, какие методы / классы запускаются во сколько разных потоков.С помощью этой информации вы можете выяснить, почему ваше приложение использует эти методы / классы во множестве потоков, которые, как я предполагаю,

.
1 голос
/ 16 января 2011

Как мы уже говорили, обновление Windows может быть причиной 100% загрузки процессора.

...