2012-04-22 2 views
0

Я разрабатываю Java Communication Gateway (CGW), где он получает пакет данных с устройства GPS, обрабатывает его и хранит в одной таблице под названием Live table (база данных работает на другом сервере - от Java CGW я вызвал соединение с базой данных через пул соединений и вставлял данные в таблицу Live).Веб-приложение становится очень медленным С Java

С другой стороны, наше веб-приложение также считывает данные из одной живой таблицы. Следовательно, при запуске приложения Java CGW веб-приложение становится очень медленным, даже первая страница не открывается. Я использую SQL Server 2005.

Пожалуйста, предложите мне, почему это происходит.

Заранее спасибо.

+0

Это похоже на проблему с приоритетом нити, возможно, вам стоит взглянуть на это. –

+0

Таблица, вероятно, заблокирована приложением CGW. Следовательно, запрос замедляется. –

+0

@AmitBhargava - Как я могу исправить, если он заблокирован – geekIndiana

ответ

0

Похоже, ваша проблема связана с проблемой приоритета потока, поскольку чтение/сохранение данных, по-видимому, занимает больше времени процессора, чем ожидалось, вы можете снизить приоритет потока, вызвав setPriority с числом ниже 5 в текущем потоке.

Чтобы получить текущую тему.

Thread.currentThread().setPriority(MIN_PRIORITY); 

Чтобы узнать, как это назвать правильно проверить Set Priority method. надеюсь, что это помогает!

+0

Но я звоню 200 потокам на другом сервере, где работает мое приложение CGW, в этом потоке я использовал больше данных для обработки, так как у нас есть данные за каждую минуту 2000, поступающие с устройств. Для вставки/обновления происходит в сервере базы данных с максимальным подключением 200 через пул соединений. Пожалуйста, скажите мне, как поток будет влиять на операцию, когда я использую эти 200 потоков для переноса данных с устройства, а затем вставки/обновления в базу данных. – geekIndiana

+0

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

+0

Я использую систему HornetQ JMS для хранения всех данных, поступающих с устройств. HornetQ хранит все данные, и мы читаем данные через TCP-прослушиватель, а затем мы храним в HornetQ, то есть у нас есть одно приложение, которое снова находится на том же сервере, откуда мы читаем данные по 200 потокам из hornetQ одновременно - каждый поток обращается к базе данных после получения базы данных объект соединения из пула соединений, а затем вставьте данные в таблицу Live. все 200 потоков получают подключение к базе данных из пула соединений и используют этот объект соединения для хранения данных в живой таблице, а одноразовое приложение также считывает только текущую таблицу. – geekIndiana

0

Вы выполнили профилирование производительности сервера БД? Возможно, рабочая нагрузка на сервер БД слишком тяжелая. Если веб-приложение только считывает данные, конфигурация базы данных ведущего/ведомого должна решить проблему рабочей нагрузки сервера БД.

+0

Не могли бы вы вкратце объяснить, как использовать профилировщик и как создать основную рабочую архитектуру, когда мы храним данные в живой таблице, и в то же время мои пользователи пытаются получить доступ к своему транспортному средству через веб-приложение, пожалуйста, предложите мне, как двигаться вперед. – geekIndiana

+0

поясните вкратце – geekIndiana

+0

MySql поддерживает master/slave, и его довольно легко настроить. См. Справочный документ здесь: http://xorl.wordpress.com/2011/03/13/how-to-mysql-masterslave-replication/ –

0

200 нить - сложное число.

  • Что такое системный архитектурный обзор?
  • Сколько памяти потребляется для всех этих потоков.
  • Как синхронизировать данные/связь между потоками.
  • Какова конфигурация оборудования.
  • Нужно ли использовать SqlServer? мосты jdbc: odbc могут быть медленнее, чем jdbc: mysql.

Обычно в сценариях с несколькими потоками служебные данные связи являются экспоненциальными по отношению к участвующим агентам. Кроме того, способ обработки данных: одна и та же функция для многих данных или несколько функций/этапов для нескольких типов данных?

Смежные вопросы