Модераторы: LSD, AntonSaburov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Tomcat, test loading  
:(
    Опции темы
sergioK1
Дата 24.11.2015, 01:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Есть сервер на нем есть один из сервисов к которому каждую секунду кто то может 
подключиться , тоесть стандартный спринг-контроллер он вызывет сервис и тот обрщаеться к БД, ничего не обычного, проект клиента обращаетсяк сервису по формату JSON тоже все страндартно, Но проблема возникла в том что у сервака
кончаються ресурсы(кластер мы сделаем, но чуть позже), рестарт все лечит, но вопрос как эту нехватку 
ресурсов отлавливать? Пока я запускаю wget(наверно лучше curl) и если ответ больше 2секунд, то шлю алерт, пока клиеты у меня под контролем я их просто отключаю, потом такое станет не возможным , 
Есть что нибудь более стандартное/кошерное?  не я же один с такой ситуайией сталкиваюсь, 
 Я также могу также написать свой фильрт и по фй пи клиента либо давать ему данный либо слать нафиг, в предыдушем проекте больше 50запросов в час слали нафиг , велосипед изобретать не хочу , какие тут вырианты ? 
PM MAIL   Вверх
d_k
Дата 24.11.2015, 08:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 20.7.2004

Репутация: 1
Всего: 1



1. Инспекция кода на предмет незакрытых ресурсов, хранения ссылок на неипользуемые объекты и проч... Просто так ресурсы не исчезают, GC не может выполнить свою работу.
2. Профилировщик можно попробовать натравить
3. Нагрузочное тестирование провести
В общем искать косяк в коде, кластер тут не поможет судя по всему.
Хотя проблема то не раскрыта на 100% потому весь предыдущий пост - мысли вслух

Это сообщение отредактировал(а) d_k - 24.11.2015, 08:19
PM MAIL   Вверх
sergioK1
Дата 24.11.2015, 09:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(d_k @ 24.11.2015,  07:18)
1. Инспекция кода на предмет незакрытых ресурсов, хранения ссылок на неипользуемые объекты и проч... Просто так ресурсы не исчезают, GC не может выполнить свою работу.
2. Профилировщик можно попробовать натравить
3. Нагрузочное тестирование провести
В общем искать косяк в коде, кластер тут не поможет судя по всему.
Хотя проблема то не раскрыта на 100% потому весь предыдущий пост - мысли вслух

косяк видимо при эксепшене когда 
коннестион к базе падает, на это и логер намекает, но чем искать контретно ? 
PM MAIL   Вверх
d_k
Дата 24.11.2015, 09:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 20.7.2004

Репутация: 1
Всего: 1



Ну и что конекшин к базе? Пул настроен (опция validationQuery)? что логгер намекает?
PM MAIL   Вверх
sergioK1
Дата 24.11.2015, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(d_k @ 24.11.2015,  08:10)
что логгер намекает?

вот это 

-------------------
22-Nov-2015 18:22:38.493 INFO [Thread-3] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["http-apr-8080"]
22-Nov-2015 18:22:38.556 INFO [Thread-3] org.apache.coyote.AbstractProtocol.pause Pausing ProtocolHandler ["ajp-apr-8009"]
22-Nov-2015 18:22:38.618 INFO [Thread-3] org.apache.catalina.core.StandardService.stopInternal Stopping service Catalina
22-Nov-2015 18:22:38.634 WARNING [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.clearReferencesThreads The web application [GameService] appears to have started a thread named [Abandoned connection cleanup thread] but has failed to stop it. This is very likely to create a memory leak. Stack trace of thread:
 java.lang.Object.wait(Native Method)
 java.lang.ref.ReferenceQueue.remove(Unknown Source)
 com.mysql.jdbc.AbandonedConnectionCleanupThread.run(AbandonedConnectionCleanupThread.java:43)
22-Nov-2015 18:22:38.634 SEVERE [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [GameService] created a ThreadLocal with key of type [org.sql2o.reflection.MethodAccessorsGenerator$1] (value [org.sql2o.reflection.MethodAccessorsGenerator$1@7e704d7]) and a value of type [sun.reflect.MethodAccessorGenerator] (value [sun.reflect.MethodAccessorGenerator@1f59dd32]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
22-Nov-2015 18:22:38.634 SEVERE [localhost-startStop-2] org.apache.catalina.loader.WebappClassLoaderBase.checkThreadLocalMapForLeaks The web application [GameService] created a ThreadLocal with key of type [org.sql2o.reflection.MethodAccessorsGenerator$1] (value [org.sql2o.reflection.MethodAccessorsGenerator$1@7e704d7]) and a value of type [sun.reflect.MethodAccessorGenerator] (value [sun.reflect.MethodAccessorGenerator@4eaa7038]) but failed to remove it when the web application was stopped. Threads are going to be renewed over time to try and avoid a probable memory leak.
22-Nov-2015 18:22:38.665 INFO [Thread-3] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["http-apr-8080"]
22-Nov-2015 18:22:38.759 INFO [Thread-3] org.apache.coyote.AbstractProtocol.stop Stopping ProtocolHandler ["ajp-apr-8009"]
22-Nov-2015 18:22:38.821 INFO [Thread-3] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["http-apr-8080"]
22-Nov-2015 18:22:38.821 INFO [Thread-3] org.apache.coyote.AbstractProtocol.destroy Destroying ProtocolHandler ["ajp-apr-8009"]
22-Nov-2015 18:26:19.595 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server version:        Apache Tomcat/8.0.23
22-Nov-2015 18:26:19.596 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server built:          May 19 2015 14:58:38 UTC
22-Nov-2015 18:26:19.596 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Server number:         8.0.23.0
22-Nov-2015 18:26:19.597 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Name:               Windows 8.1
22-Nov-2015 18:26:19.597 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log OS Version:            6.3
22-Nov-2015 18:26:19.597 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Architecture:          amd64
22-Nov-2015 18:26:19.597 INFO [main] org.apache.catalina.startup.VersionLoggerListener.log Java Home:             E:\java\jre1.8.0_25
----------------------------

GameService  название проекта, org.sql2o - фраймворк  http://www.sql2o.org/

Пулл в context.xml    <Resource auth="Container" driverClassName="com.mysql.jdbc.Driver" maxActive="100" maxIdle="30" maxWait="10000" 
        name="jdbc/gamesData"  password="mypassword" type="javax.sql.DataSource" url="jdbc:mysql://192.168.1.xxx:3306/gamesData" username="myuser"/>


validationQuery Могу добавить что оно даст? 
PM MAIL   Вверх
d_k
Дата 24.11.2015, 15:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 76
Регистрация: 20.7.2004

Репутация: 1
Всего: 1



Нет в этом логе ничего такого сверхестественного. Тут упоминается mem leakage при редеплое или стопе сервака при неудачной попытке или ее отсутсвии дерегистрировтаь драйвер jdbc.
Если несколько раз передеплаивать приложение - то реально можно заработать утечку.  Сам такое зарабатывал. Как лечить - вариант вручную дерегистрировать драйвер  jdbc в servlet context листенере.
Если конечно проблема именно в этой утечке...
PM MAIL   Вверх
sergioK1
Дата 24.11.2015, 16:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 417
Регистрация: 30.1.2011

Репутация: нет
Всего: нет



Цитата(d_k @ 24.11.2015,  14:42)
- вариант вручную дерегистрировать драйвер  jdbc в servlet context листенере.

что конкретно нужно делать? 
PM MAIL   Вверх
a0730
Дата 25.11.2015, 07:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 0
Регистрация: 1.6.2008

Репутация: нет
Всего: нет



Нужно создать класс и зарегистрировать его в web.xml:

Код

public class ContextFinalizer implements ServletContextListener {

    private static final Logger LOGGER = LoggerFactory.getLogger(ContextFinalizer.class);

    public void contextInitialized(ServletContextEvent sce) {
    }

    public void contextDestroyed(ServletContextEvent sce) {
        Enumeration<Driver> drivers = DriverManager.getDrivers();
        Driver d = null;
        while(drivers.hasMoreElements()) {
            try {
                d = drivers.nextElement();
                DriverManager.deregisterDriver(d);
                LOGGER.warn(String.format("Driver %s deregistered", d));
            } catch (SQLException ex) {
                LOGGER.warn(String.format("Error deregistering driver %s", d), ex);
            }
        }
        try {
         AbandonedConnectionCleanupThread.shutdown();
        } catch (InterruptedException e) {
         logger.warn("SEVERE problem cleaning up: " + e.getMessage());
         e.printStackTrace();
        }
    }
}

Код

<web-app...
    <listener>
        <listener-class>path.to.ContextFinalizer</listener-class>
    </listener>
</web-app>



Этот ответ добавлен с нового Винграда - http://vingrad.com
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Java"
LSD   AntonSaburov
powerOn   tux
  • Прежде, чем задать вопрос, прочтите это!
  • Книги по Java собираются здесь.
  • Документация и ресурсы по Java находятся здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит", если у Вас нет русских шрифтов.
  • Помечайте свой вопрос как решённый, если на него получен ответ. Ссылка "Пометить как решённый" находится над первым постом.
  • Действия модераторов можно обсудить здесь.
  • FAQ раздела лежит здесь.

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java EE (J2EE) и Spring | Следующая тема »


 




[ Время генерации скрипта: 0.0767 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.