2013-08-07 5 views
2

Так что я получаю время загрузки страницы в диапазоне 30-45 секунд.Градиентная разработка enviornment page загружается очень медленно

Немного истории:

Это не всегда для этого проекта. Этот проект находится в производстве, поэтому я не затронул код некоторое время. Я заметил, что это произошло в последний раз, когда я обновлял код. Я не помню ничего конкретного, что я изменил, что должно иметь какое-либо отношение к проблеме. У меня есть другие проекты, которые работают с одинаковыми версиями Grails без проблем.

Я думаю, что это началось в 2.2.3. Теперь я выполняю 2.2.4.

Я использую x64 JDK 1.7.0_25, Windows 7 x64.

Я не уверен, что еще сказать, что это будет актуально. Любая помощь приветствуется!

Редактировать: Работа с -noreloading не имеет эффекта.

Edit2: Я пытался удалить свою папку .grails полностью, бег clean и удаление моей целевой папки и журнала StackTrace.

Редактировать 3: Кажется, что количество времени, которое требуется, зависит от количества отображаемых/прочитанных данных. Маленькие страницы занимают 3-4 секунды. Средние страницы 10-12 секунд ...

Edit4: Я запускаю его через IntelliJ IDEA 12.1.4 x64 (idea64.exe). Я также пробовал это за пределами IntelliJ с теми же результатами.

Редакция 5: База данных - это предприятие Oracle, которое поддерживает всю компанию. Он управляется администраторами на полный рабочий день. Это не сервер MySQL на моей локальной машине.

Edit6: приложение также функционирует нормально, когда развертывается в TEST (test war), но по-прежнему медленно, когда бежал с test run-app.

Начало где-то: Я загрузил JDK 1.7.21 и запускал приложение с этим, и он начал работать без проблем! Затем я побежал clean, который вызвал повторную компиляцию и прекратил работу ... grr

Теперь с 1.7.21 все еще активным, я пробовал -noreloading, и он работает!

Annnd ... теперь он работает, даже если я не использую -noreloading ..........

Я вернулся к 1.7.25 .. побежал clean, и это работает , Sooooooo да ... объясните это.

И теперь этого больше нет.

+3

Это Grails;) – Sliq

+0

Есть ли какое-либо взаимодействие базы данных во время загрузки страницы? – Alidad

+0

Да есть - довольно много. Однако он использовался для загрузки через ~ 2-3 секунды. –

ответ

1

Так что причина, почему это происходит:

JDK 1.7.25

+0

был проблемой JDK 1.7.25 или решением? – Drew

+0

Yknow Я не могу сказать. В то время я думал, что это проблема, но это было так неустойчиво. –

0

Обычно вы можете исправить это, выполнив

grails clean 

в командной строке Grails (я открываю его с помощью Ctrl + Alt + G в IntelliJ IDEA). Это стирает все скомпилированные файлы и перекомпилирует ваш проект с нуля (afaik), который обычно стирает подобные ошибки. Это не является реальным исправлением основной проблемы, но оно решает проблему. Grails очень экспериментально и нестабильно, если вы спросите меня, у меня много странной ошибки, которая обычно исчезает при выполнении clean. Кстати, я использую 2.1.5 для Windows 7 x64.

+5

Netflix, Skydrive, eHarmony и другие используют «Grails, который является очень экспериментальным и неустойчивым» ??? :-) – dmahapatro

+0

@dmahapatro Я работаю в одной из самых успешных интернет-компаний в Европе, и да, мы используем Grails. Но я действительно думаю, что, увидев это в действии еще 3 года, этот грааль не стабилен и не установлен. Ничего страшного в работе, я действительно не хочу отрицать Grails, но случается слишком много непредвиденных вещей, поэтому я бы действительно сказал, что это в каком-то «экспериментальном» состоянии. – Sliq

+2

@Panique Я не думаю, что ваша проблема такая же, как у OP. Может быть, это хороший случай, чтобы попытаться воспроизвести вашу проблему или обсудить ее в списке рассылки. Я не думаю, что «экспериментальные» или «неустойчивые» являются правильными словами для вашего дела. Это может быть связано с перегрузчиком агента. Во всяком случае, короткий ответ: помогите Grails быть лучше! –

1

Это под Linux, но будет, возможно, полезно:

Если вы работаете код внутри IDE:

п.с. auwx | Grep Явы

-Dgrails.console.class = grails.build .logging.GrailsEclipseConsole -Dosgi.requiredJavaVersion = 1,6 -Xms40m -Xmx768m -XX: MaxPermSize = 256m -

Как вы можете видеть настройки памяти Xms и Xmx являются довольно низкими ...

В вашем IDE должен быть файл INI:

more STS.ini 
     1 -vm 
     2 /usr/lib/jvm/java-6-openjdk-amd64/bin/java 
     3 -startup 
     4 plugins/org.eclipse.equinox.launcher_1.3.0.v20120522-1813.jar 
     5 --launcher.library 
     6 plugins/org.eclipse.equinox.launcher.gtk.linux.x86_64_1.1.200.v20120913-144807 
     7 -product 
     8 org.springsource.sts.ide 
     9 --launcher.defaultAction 
    10 openFile 
    11 -vmargs 
    12 -Dgrails.console.enable.interactive=false 
    13 -Dgrails.console.enable.terminal=false 
    14 -Djline.terminal=jline.UnsupportedTerminal 
    15 -Dgrails.console.class=grails.build.logging.GrailsEclipseConsole 
    16 -Dosgi.requiredJavaVersion=1.6 
    17 -Xms40m 
    18 -Xmx768m 
    19 -XX:MaxPermSize=256m 

Вы можете эти значения и попробуйте перезапустить IDE ...

Я также хотел бы предложить вам запустить что-то вроде Nmon до/во время и контролировать, пока выполняется код, и контролировать пропускную способность диска/процессора/сети.

Вы можете обнаружить, что вы забиваете свою коробку разработчиков, что вызывает проблему.

Если производство в порядке, я действительно не понимаю, в чем проблема ..

E2A Ааа забыл это было под окнами, нет Nmon для windblows но эй не то, что я пробовал - http://sourceforge.net/projects/jnmonanalyser/

E2A снова: 1. Включить отладку DataSource.groovy:

dataSource { 
    pooled = true 
    driverClassName ="com.mysql.jdbc.Driver" 
    username = "aaa" 
    password = "aaaa" 
    //SQL Logging - refer to Config.groovy at hibernate.sql now 
    logSql=true 
    ... 
  1. Config.groovy - это остановит приложение от запуска I е у вас есть вопросы, с возможностью говорить записи, которые вы пытаетесь добавить в ваш Bootstrap

    // ошибка возврата, когда он не //grails.gorm.failOnError=true

Включить log4j и использовать или его часть:

// log4j configuration 
log4j { 
    appender.stdout = "org.apache.log4j.ConsoleAppender" 
    appender.'stdout.layout'="org.apache.log4j.PatternLayout" 
    appender.'stdout.layout.ConversionPattern'='[%r] %c{2} %m%n' 
    appender.stacktraceLog = "org.apache.log4j.FileAppender" 
    appender.'stacktraceLog.layout'="org.apache.log4j.PatternLayout" 
    appender.'stacktraceLog.layout.ConversionPattern'='[%r] %c{2} %m%n' 
    appender.'stacktraceLog.File'="stacktrace.log" 
    appender.'stacktraceLog.MaxFileSize'="1MB" 
    rootLogger="error,stdout" 
    logger { 
     grails="error" 
     StackTrace="error,stacktraceLog" 
     org { 
      codehaus.groovy.grails.web.servlet="error" // controllers 
      codehaus.groovy.grails.web.pages="error" // GSP 
      codehaus.groovy.grails.web.sitemesh="error" // layouts 
      codehaus.groovy.grails."web.mapping.filter"="error" // URL mapping 
      codehaus.groovy.grails."web.mapping"="error" // URL mapping 
      codehaus.groovy.grails.commons="info" // core/classloading 
      codehaus.groovy.grails.plugins="error" // plugins 
      codehaus.groovy.grails.orm.hibernate="error" // hibernate integration 

      // Hibernate should be on - if you want to catch sql logs 
      springframework="off" 
      hibernate="on" 
      //hibernate.SQL = 'debug' 
      //hibernate.type = 'trace' 
      //hibernate.SQL = 'info,hibernate' 
      //hibernate.type = 'info,hibernate' 
      //hibernate = 'info,hibernate' 


      //apache.commons.digester.Digester = 'debug,javaclasses' 
     } 
    } 
    additivity.StackTrace=false 
} 

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

+0

Я пробовал эти настройки - без кубиков. В настоящее время я запускаю другие приложения Grails, используя одну и ту же настройку без проблем. –

+0

Попробуйте создать новое рабочее пространство с тем же именем проекта, а затем скопируйте из существующего проекта папку grails-app и Web apps на нее. Обновите новый проект. Попробуйте использовать новое рабочее пространство. Посмотрите, делает ли. Любой diff – Vahid

+0

Просто попробовал - это то же самое происходит. Это должен быть параметр или что-то, что у меня есть в этом проекте. Я просто не могу понять. –

0
  1. Удалить файл stacktrace в целевой папке вашего проекта. Он может получить огромный. (В настоящее время мой составляет 48 ГБ).
  2. Проверьте, достаточно ли места в каталоге C.
  3. Если вы являетесь горячей заменой кода, то загрузка страниц может замедляться. Поэтому в таких случаях перезапустите dev-сервер (приложение grails).
  4. Иногда запросы на сервер могут зависать, когда фокусировка (левый или правый щелчок на cmd) в командной строке, кажется, пропускает паузу. (странно)
  5. Увеличение количества подстановок JVM, кучи в зависимости от вашей памяти также могут помочь.
  6. Попробуйте запустить сервер с помощью командной строки, а не в среде IDE.
  7. Лучше использовать методы для действий, чем закрытие.

Для системы с 3GB RAM, моя переменная окружения параметр:

JAVA_OPTS 
-Xms512m -Xmx1g 

Настройки STS.ini:

-startup 
plugins/org.eclipse.equinox.launcher_1.2.0.v20110502.jar 
--launcher.library 
plugins/org.eclipse.equinox.launcher.win32.win32.x86_1.1.100.v20110502 
-product 
com.springsource.sts.ide 
--launcher.defaultAction 
openFile 
--launcher.XXMaxPermSize 
384M 
-vmargs 
-Dosgi.requiredJavaVersion=1.5 
-Xmn128m 
-Xms1024m 
-Xmx1024m 
-Xss2m 
-XX:PermSize=256m 
-XX:MaxPermSize=512m 
-XX:MaxGCPauseMillis=10 
-XX:MaxHeapFreeRatio=50 
-XX:+UseConcMarkSweepGC 
-XX:+CMSIncrementalMode 
-XX:+CMSIncrementalPacing 
-XX:+UserParallelGC 

8) Может быть, проблема с JDK и Граалей версии. Похоже, что есть ошибка с OpenJDK 1.7u25 and spring loaded. Хорошо, вы не используете OpenJDK, но попробуйте с другой версией в любом случае. Попробуйте с JDK1.7u03.
9) Попробуйте JVM с флагом -server и посмотрите, улучшает ли производительность во время выполнения.

grails run-app -server 
+0

Спасибо за ответ, но, к сожалению, это не проблема. 1. Сделано до 2. Это не проблема 3. Я не 4. Не уверен, что вы имеете в виду 5. Память не проблема 6. Я сделал 7. Я –

+1

Вы пробовали разные версии JDK? Используете ли вы ту же версию JDK, которая используется в производстве? – boring

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