Веб-приложение заблокировано и загрузка процессора достигла 100%
У нас работает веб-приложение, в котором зарегистрировано около 100 пользователей. Все клиенты подключены к серверу с помощью websync. У меня было требование, чтобы сеанс всегда был активным, поэтому я восстанавливаю сеанс, когда он скоро истечет.
Но через 3 или 4 дня я обнаружил, что процессор достиг 100% и приложение заблокировано, а затем нам нужно перезапустить сервер, чтобы он заработал.
Спасибо за предоставление решений заранее.
Спасибо
3 ответа
У нас есть множество клиентов, использующих WebSync с десятками тысяч одновременных подключений (и наш кластер по требованию также ежедневно обслуживает несколько тысяч пользователей без остановки), поэтому, если вы видите блокировку ЦП, скорее всего, вы В вашем коде возникла проблема с многопоточностью, возможно, в одном из ваших событий (при условии, что это вообще связано с кодом WebSync).
Не забывайте, что все события WebSync являются статическими, поэтому, если вы используете общие ресурсы, вам необходимо соответствующим образом управлять ими (т. Е. Вы должны рассчитывать на то, что они многопоточные). Все методы WebSync сами по себе являются потокобезопасными, но если у вас есть что-то в ваших собственных событиях, вам нужно управлять этим самостоятельно.
Не стесняйтесь общаться с нами напрямую, хотя, как предложил @Anton!
Почему бы вам просто не увеличить продолжительность сеанса, чтобы он был чрезвычайно длинным, а не восстанавливать его?
Вы запускаете профилировщик на сервере, когда он достигает 100% процессора? Это должно эффективно сказать вам, какие методы / классы запускаются во сколько разных потоков. С помощью этой информации вы можете выяснить, почему ваше приложение запускает эти методы / классы во множестве потоков.
Как мы уже говорили ранее, обновление Windows может быть причиной 100% загрузки процессора.