Как зайти в Даркнет?!
25th January, 01:11
6
0
Как в tkinter из поля ввода Entry получить значение в одну переменную и обновить строку кнопкой, затем получить ещё одно введённое значение и затем сложить их. Ниже пример кода
21st July, 19:00
895
0
Программа, которая создает фейковые сервера в поиске игровых серверов CS 1.6 Steam
21st March, 17:43
948
0
Очень долго работает Update запрос Oracle
27th January, 09:58
914
0
не могу запустить сервер на tomcat HTTP Status 404 – Not Found
21st January, 18:02
905
0
Где можно найти фрилансера для выполнения поступающих задач, на постоянной основе?
2nd December, 09:48
938
0
Разработка мобильной кроссплатформенной военной игры
16th July, 17:57
1724
0
период по дням
25th October, 10:44
3955
0
Пишу скрипты для BAS только на запросах
16th September, 02:42
3720
0
Некорректный скрипт для закрытия блока
14th April, 18:33
4613
0
прокидывать exception в блоках try-catch JAVA
11th March, 21:11
4381
0
Помогите пожалуйста решить задачи
24th November, 23:53
6086
0
Не понимаю почему не открывается детальное описание продукта
11th November, 11:51
4351
0
Нужно решить задачу по программированию на массивы
27th October, 18:01
4396
0
Метода Крамера С++
23rd October, 11:55
4309
0
помогите решить задачу на C++
22nd October, 17:31
4002
0
Помогите решить задачу на python с codeforces
22nd October, 11:11
4492
0
Python с нуля: полное руководство для начинающих
18th June, 13:58
2599
0
Какие стратегии вы использовали для повышения производительности веб-приложений?
- Есть ли у вас личный опыт преодоления препятствий в работе веб-приложений?
- Какие-либо рекомендуемые стратегии повышения производительности управляемого данными веб-приложения?
Моя команда разработчиков работает над веб-приложением (JSP reports, HTML, JavaScript), которое использует базу данных Oracle (PL/SQL). ключевая функциональность приложения заключается в создании отчетов, где пользователь может получить PDFs отчетов на высоком уровне и детализировать их до более низких уровней вспомогательных сведений.
Поскольку число вспомогательных подробных записей выросло до миллионов, производительность системы значительно снизилась. Основываясь на нашем текущем анализе метрик, узкое место, по-видимому, находится в логике, поражающей производительность DB и DB. В настоящее время изучается изменение модели DB и повторное выполнение некоторых логических операций на стороне сервера.
Разбиение на разделы, индексация, объяснение планов и запуск статистики-это вещи, которые были сделаны на стороне DB, чтобы попытаться помочь улучшить производительность. Хотя они и помогли, они не решили проблему удовлетворительно. Самая сложная часть анализа данных о производительности заключается в том, что база данных и веб-серверы удаленно управляются другой частью организации IT, поэтому разработчики не имеют регулярного, полного доступа, чтобы увидеть, что происходит (особенно в производственной среде, которая не зеркально отражена точно в любой другой среде разработки/тестирования).
Хотя мой ответ может не содержать никаких конкретных шагов, чтобы помочь, это всегда то, с чего я начинаю.
Первое, что я бы сделал, это постарался отбросить все ваши предположения о том, в чем проблема, и предпринять шаги по установке метрик везде, где вы можете. Пусть метрики направляют вас, а не ваша интуиция. Я гонялся за многими, многими, многими белыми кроликами, идущими по дороге, которая подводила меня больше раз, чем они были правы.
Рассматривали ли вы возможность создания своих данных заранее? Другими словами, существуют ли группы данных, которые запрашиваются снова и снова? Если да, то подготовьте их до того, как пользователь попросит. Я не совсем говорю о кэшировании, но я думаю, что это часть уравнения.
Возможно, стоит сделать шаг назад от кода и изучить шаблоны использования системы. Например, если вы показываете людям ежемесячную информацию о запасах или продажах, смотрят ли они на нее только в конце месяца? Если это так, просто соберите данные в последний день и сохраните их. Если они смотрят на него ежедневно, возможно, попробуют построить результаты каждого предыдущего дня и сохранить результаты и избежать расчета. Я думаю, что в конечном счете я подталкиваю вас к решению динамического программирования ; если вы знаете ответ, Не решайте его снова.
Вы это уже проверили?
Лучшие практики для быстрого создания веб-страниц из Yahoo!'S исключительная команда производительности
Если у вас действительно возникли проблемы с бэкендом, это не поможет. Но мы использовали их советы с большим эффектом, чтобы сделать наш сайт быстрее, и еще многое предстоит сделать.
Также используйте надстройку YSlow для Firebug. Вы можете быть удивлены, когда увидите, где в действительности занято время.
Как я уже сказал в другом вопросе :
Используйте профилировщик. Да, они стоят денег, и иногда их использование может быть немного неудобным, но они дают вам гораздо больше реальных доказательств, чем догадок.
Человеческие существа обычно плохо угадывают, где находятся узкие места производительности. Это просто кажется чем-то, что наш мозг не очень хорошо умеет делать. Это может показаться очевидным, у вас могут быть отличные идеи о том, в чем заключается проблема, но реальный мир часто оказывается занят чем-то другим. А оптимизация неправильной части кода означает, в лучшем случае, много работы с минимальной пользой. Чаще всего он замедляет ход событий, а иногда и вовсе ломает их. Поэтому, прежде чем вносить какие-либо изменения ради оптимизации, вы всегда должны иметь реальные доказательства от профайлера или другого точного инструмента.
Не все профилировщики стоят (дополнительных) денег. Для .Net я успешно использую старую сборку NProf (в настоящее время заброшенную, но она все еще работает для меня) для профилирования моих ASP.Net приложений. Для сервера SQL профилировщик запросов является частью пакета. Есть также профилировщик CLF от MS, но мне никогда не удавалось заставить его работать успешно.
Тем не менее, профилировщики-это определенно путь, по которому нужно идти. Таким образом, вы можете видеть, где ваша программа проводит большую часть своего времени, и не фокусироваться на вещах, которые вы считаете медленными. Кроме того, это означает, что вам не нужно ничего писать в своем коде, чтобы фактически записать метрики.
Как я уже намекал в начале, существуют различные типы профилировщиков. Три из них я считаю наиболее полезными-это профилировщики приложений, которые позволяют вам видеть, какие функции вы на самом деле проводите большую часть своего времени. Во-вторых, это профилировщики SQL, которые позволяют вам видеть, как долго выполняются Ваши запросы. Третий-это профилировщики памяти,которые помогают показать вам, какой тип объектов используется вашей памятью. Все три из них действительно полезны, и хотя вы не будете использовать их каждый день, время, когда вы их используете, избавит вас от большой головной боли.