Запуск Grails является медленным

Я бы использовал GOOD в Walmart Labs. Он выполнит эту работу, и он очень гибкий:

var hapi = require('hapi');
var good = require('good');
var server = hapi.createServer('localhost', 5000,{});
server.route({SOME ROUTE HERE});
server.start();

var options = {
subscribers: {
    'console':               ['ops', 'request', 'log', 'error'],
    'http://localhost/logs': ['log']
    }
};
server.pack.require('good', options, function (err) {

    if (!err) {
        console.log('Plugin loaded successfully');
    }
});

28
задан Bob Herrmann 14 December 2009 в 03:07
поделиться

3 ответа

К сожалению, я не уверен, что можно сделать слишком много, помимо того, что вы уже сделали. Как вы знаете, при запуске происходит много всего, включая разрешение / загрузку плагинов, добавление динамических методов к объектам вашего домена и общую динамическую природу Groovy.

Я не уверен, какую версию вы используете, но я попросил включить возможность отключения проверки зависимостей при запуске в 1.2, так как это также увеличивает время запуска.

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

Я собираюсь добавить часть новой функциональности, которая включает как минимум 10 новых объектов домена, и сначала я разрабатываю их в отдельном плагине, имея заглушки для нескольких объектов, с которыми они должны взаимодействовать из основного приложения. Это позволяет мне как сократить время запуска, так и лучше изолировать мой код.

Так что, если это вариант для вас, попробуйте разделить вещи, чтобы вы могли работать над ними по отдельности, что несколько облегчит вашу проблему. Могут быть и другие преимущества с точки зрения того, что ваша команда будет работать над более мелкими компонентами отдельно, лучшей модульностью и т.д.

Надеюсь, это будет полезно.

Я собираюсь добавить часть новой функциональности, которая включает как минимум 10 новых объектов домена, и сначала я разрабатываю их в отдельном плагине, имея заглушки для нескольких объектов, с которыми они должны взаимодействовать из основного приложения. Это позволяет мне как сократить время запуска, так и лучше изолировать мой код.

Так что, если это вариант для вас, попробуйте разделить вещи, чтобы вы могли работать над ними по отдельности, что несколько облегчит вашу проблему. Могут быть и другие преимущества с точки зрения того, что ваша команда будет работать над более мелкими компонентами отдельно, лучшей модульностью и т.д.

Надеюсь, это будет полезно.

Я собираюсь добавить часть новой функциональности, которая включает как минимум 10 новых объектов домена, и сначала я разрабатываю их в отдельном плагине, имея заглушки для нескольких объектов, с которыми они должны взаимодействовать из основного приложения. Это позволяет мне как сократить время запуска, так и лучше изолировать мой код.

Так что, если это вариант для вас, попробуйте разделить вещи, чтобы вы могли работать над ними по отдельности, что несколько облегчит вашу проблему. Могут быть и другие преимущества с точки зрения того, что ваша команда будет работать над более мелкими компонентами отдельно, лучшей модульностью и т. Д.

Надеюсь, это будет полезно.

а также лучше изолировать мой код.

Так что, если это вариант для вас, попробуйте разделить вещи, чтобы вы могли работать над ними отдельно, что несколько облегчит вашу проблему. Могут быть и другие преимущества с точки зрения того, что ваша команда будет работать над более мелкими компонентами отдельно, лучшей модульностью и т. Д.

Надеюсь, это будет полезно.

а также лучше изолировать мой код.

Так что, если это вариант для вас, попробуйте разделить вещи, чтобы вы могли работать над ними отдельно, что несколько облегчит вашу проблему. Могут быть и другие преимущества с точки зрения того, что ваша команда будет работать над более мелкими компонентами отдельно, лучшей модульностью и т. Д.

Надеюсь, это будет полезно.

10
ответ дан 28 November 2019 в 03:55
поделиться

Возможно, вы захотите посмотреть, есть ли другие ручки, которые можно повернуть, кроме Grails, чтобы это исправить.

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

1
ответ дан jvilalta 14 October 2019 в 12:06
поделиться

170 классов домена довольно большие, но 2 минуты все еще кажется мне очень длинным. У вас установлено множество плагинов? Возможно, слишком подробные настройки отладки?

Мне было бы любопытно, сколько времени потребовалось, если вы создали новое приложение grails, скопированное во все объекты вашего домена (и подмножество плагинов, которые могут потребоваться для работы объектов домена) и посмотрим, сколько времени это займет, чтобы начать.

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

Вы также можете использовать события grails для регистрации некоторой информации о времени при запуске до посмотрите, где ваши узкие места. Время для события "PluginInstalled" должно быть правильным, поскольку я думаю, что плагин гибернации будет перехвачен этим в дополнение к другим плагинам.

3
ответ дан 28 November 2019 в 03:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: