Форум сайта python.su
Здравствуйте, я начинающий программист на джанго, столкнулся с проблеммой загруженности процессора.
При количестве пользователей онлайн более 40 человек, процессор загружен на 100%, что приводит к медленной работе сайта. Сайт в локальной сети на моем компьютере.
Мой компьютер: проц - Атлон ХП 2200+, Виндовс хп (не заточен под сервер), винчестер старенький.
Сервер: LightTPD, scgi, MySQL
Загруженность процессора: MySQL -10%, Python - 50%, System - 25% остальное фаервол и др.
Вообщем вопрос: почему у меня такая большая загруженность процессора при таком малом количестве пользователей ?
Я плохой программист? Мой компьютер слишком слаб для сервера? или еще что нибудь.
Офлайн
скорее всего дело не в винде, а в твоем коде
1) исправь немного код - проблема с производительностью часто лежит именно здесь
2) смени HDD на новый
PS у меня на винде тоже были проблемы с производительностью правда с TurboGears - перешел на линукс и питон стал кушать меньше, но спустя какое-то время сделал пункты 1 и 2 == питон стал кушать почти одинаково на двух ПК
Отредактировано (Дек. 13, 2008 07:49:04)
Офлайн
pythonwin Спасибо.
Тогда еще один вопрос, как я могу сравнить производительность различный частей кода, или страниц сайта.
Офлайн
Единственное, что мне приходит в голову - это взять какой-нибудь монитор mysql, и поглядеть - какие запросы так грузят базу =)
От этого и плясать.
Офлайн
Другая мысль, более правильная - думаю что для дьянго наверняка есть какой-нибудь профайлер.
типа как-то так…
http://www.rkblog.rk.edu.pl/w/p/django-profiling-hotshot-and-kcachegrind/
или так
http://code.djangoproject.com/wiki/ProfilingDjango
Отредактировано (Дек. 13, 2008 08:19:44)
Офлайн
shiza
Там для того чтобы просмотривать результат профайленга нужен Kcachegrind, я так понял он только под Линукс, нашел для винды Wincachegrind, теперь остается проблема чтобы переконвектировать file.prof > cachegrind.out.01
Интересно кто-нибудь занимался профайленгом своего кода ?
Офлайн
да его наверное можно и так поглядеть - в блокноте. Нет? =)
Если нет, то в доке по нему написано http://docs.python.org/library/hotshot.html - как на экран вывести нужные циферки =)
Отредактировано (Дек. 13, 2008 10:48:39)
Офлайн
Правильно посоветовали. Надо профилировать код. Через hotshot или cProfile, что предпочтительней. Результаты смотреть через сам питон или debug_toolbar.
Офлайн
Cool-Di
выведи дебаг и глянь запросы, оттюнь mysql (советую перевести таблицы в InnoDB, +прогнать mysqltune.pl), хотя судя по всему проблема в коде, можешь попробовать прикрутить кеш, кешировать шаблоны, глянь по логам (или awstats) на какие страницы чаще всего осуществляются заходы и просмотри вьюшки.
статику надеюсь не джанга отдаёт?
+юзай ab для бенчмарка производительности, проверь сколько запросов в секунду тянет сервер, можно поиграться с методом запуска джанги (threaded, prefork)
Офлайн
запускаю джанго командой start manage.py runfcgi protocol=scgi method=threaded host=10.17.30.16 port=3033 prefork не работает, проблемы с флупом в винде. Апатч с мод_питоном тоже не смог запустить, фаст сцги тоже чтото не пошел, но как мне сказали мой способ запуска севрера должен быть “нормальным”.
На счет мускула, думаю что не внем проблема раз он мало загружает процессор (максимум на 10%) или я не прав ?
Что касается остального для меня темный лес. Пытаюсь сейчас профайлить, но пока что смутно разбираюсь что оно мне выдает.
Отредактировано (Дек. 13, 2008 17:14:21)
Офлайн