Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -
Количество ответов: 26

Есть Windows Server 2008 R2 c MS SQL 10.00.2531, php 5.3.24, moodle 2.4.5+ (Build: 20130823), IIS

Устанавливал параметры в moodle:

extramemorylimit=1024MB

slash arguments выключен, так как появляется ошибка 404 при скачке файлов и не отображаются картинки


Есть проблемы, которые встречаются очень часто:

1) Сайт медленно работает при большом количестве пользователей

2) При прохождении модулей "Тест", бывает что не всегда их с первого раза открывает (пробовал и в новом окне с JS и в текущем), при отправке результатов довольно часто возникает ошибка 404. Приходиться перезагружать страницу с тестом либо заново авторизовываваться в другом браузере и пробовать повторно отправлять результаты.

3) Думал проапдейтить сервер и посмотреть cron, но при его выполнении страница долго грузиться и потом ошибка 500. При проверке обновлений таже ошибка 500. При удалении глобальной группы, также ошибка 500

Скачал логи IIS, PHP, MSSQL, перед этим включив отладку, пытаюсь найти ошибку, но все тщетно, не могу понять даже пока в какую сторону смотреть

в логах php по 2ому пункту нашел записи

[07-Dec-2015 10:55:30 Europe/Minsk] Database transaction aborted automatically in G:\Moodle/mod/quiz/processattempt.php
[07-Dec-2015 10:55:30 Europe/Minsk] Default exception handler: Эта попытка уже была закончена. Debug:
Error code: attemptalreadyclosed
* line 101 of \mod\quiz\processattempt.php: moodle_quiz_exception thrown

Вот еще часто встречается: [07-Dec-2015 08:30:59 Europe/Minsk] PHP Deprecated:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0
[07-Dec-2015 08:34:38 Europe/Minsk] PHP Warning:  PHP Startup: dbase: Unable to initialize module

И вот
[07-Dec-2015 09:09:11 Europe/Minsk] PHP Deprecated:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0
[07-Dec-2015 09:09:11 Europe/Minsk] PHP Deprecated:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0
[07-Dec-2015 09:09:11 Europe/Minsk] PHP Deprecated:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0
[07-Dec-2015 09:09:11 Europe/Minsk] PHP Deprecated:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0
[07-Dec-2015 09:09:11 Europe/Minsk] PHP Deprecated:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0
[07-Dec-2015 09:09:58 Europe/Minsk] Default exception handler: Отсутствует обязательный параметр (attempt) Debug:
Error code: missingparam
* line 476 of \lib\setuplib.php: moodle_exception thrown
* line 527 of \lib\moodlelib.php: call to print_error()
* line 40 of \mod\quiz\processattempt.php: call to required_param()

Извиняюсь тут за код, но проблема еще в том, что файл PHP_errors.log весит 500мб (с 2013 года на все сайты я так понял). Приму любую помощь и советы
В ответ на Alexander Matveyev

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Наталья Смирнова -

Иду с этой же проблемой. Один-в-один. Отличия лишь только в том, что БД mysql (тип таблиц innodb) и moodle 2.6.1.  Php 5.4.

Хотела переносить базу на mssql, но вижу, что не поможет. Перенесла пока только на отдельный сервер, копаюсь в настройках mysql server, потому что не знаю куда еще(


В ответ на Наталья Смирнова

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -
У меня есть предчувствие, что проблемы по пункту 2 из-за малого таймаута выполнения запроса, а по 3ему даже не знаю что и думать. Да, версия moodle не новая, т.к. php 5.3 только и ее поддерживает, но я и немогу обновиться в пределах этой версии
В ответ на Alexander Matveyev

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Vadim Tabunshchik -
Изображение пользователя Developers
php 5.3.24

Обновить до 5.5/5.6, не смотря на то, что для moodle 2.4.5+ вроде хватает 5.3, но в нем нет opcache

PHP Warning:  PHP Startup: dbase: Unable to initialize module

Закомментировать в php.ini строку extension=php_dbase.dll, это модуль не нужен. И вообще отключите все ненужные для moodle модули, кот не упоминаются на странице Среда (версии ПО)

PHP Deprecated:  Directive 'magic_quotes_gpc' is deprecated in PHP 5.3 and greater in Unknown on line 0

Убрать в php.ini директиву magic_quotes_gpc, она с версии РНР 5.3 уже не используется и выключена.

slash arguments выключен, так как появляется ошибка 404 при скачке файлов и не отображаются картинки

Установить URL Rewrite и настроить как описано тут: https://docs.moodle.org/29/en/Internet_Information_Services#Slasharguments
Потом включить slasharguments на сайте. См. ещё это сообщение: https://moodle.org/mod/forum/discuss.php?d=276459#p1201745

часто возникает ошибка 404
страница долго грузиться и потом ошибка 500

Увеличить время выполнения скрипта max_execution_time, увеличить max_input_time

Увеличить в настройках IIS CGI timeouts. По умолчанию он установлен 5 мин, рекомендуют установить 1 час

Попробовать увеличить ограничение на длину запроса в IIS - maxRequestLength

Вот тут Не загружаются большие файлы scorm IIS мы же уже обсуждали настройки, попробуйте увеличить "Длина очереди"

Error code: относятся к ошибкам moodle из-за сервера

В ответ на Vadim Tabunshchik

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -
Спасибо, Вадим, буду пробовать. Включил подробную отладку для IIS, буду еще отслеживать после исправлений
В ответ на Alexander Matveyev

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Файл с логими php можете заархивировать, если вы его всё-равно не собираетесь весь читать.

Таймаут больше 5 минут устанавливать не стоит - для большинства штатных операций (типа отображение страницы теста) это не нужно, длительные операции вроде восстановления из бэкапа сами увеличивают время (если в настройках php это правильно разрешено). Если у вас больше минуты страница теста открывается, то пользователи будут беситься всё-равно, так что в любом случае нужно разбираться, что и как.

Если сайт и так тормозной, не обновляйтесь через веб-интерфейс, используйте утилиты командной строки. Через командную строку может неделю обновляться, но не вылетит. Обновитесь хотя бы до 2.7, там много оптимизаций сделано по кэшированию, сразу нагрузка должна будет уменьшиться. (только про бэкапы не забывайте)

Проверьте, не включен ли у вас режим дизайнера тем. При нем отключается кэширование css и во много раз возрастает нагрузка.

Выясните, сколько в среднем у вас работает cron. Так, если он запускатеся каждую минуту, а работает по 5 минут, то будет получаться, что у вас фоном работает 4 очень ресурсоемких процесса. А cron может тормозить, например, из-за того что php отправляет почту напрямую, а не через почтовый сервер. Это, конечно, не ваш случай, просто для примера.

Разберитесь в php - обновитесь до 5.5. В нём должно быть расширение opcache, тоже должна снизиться нагрузка. Нет возможности обновить php в связке с iis - поставьте рядом apache c php 5.5 на другом порту, а с iis сделайте проброску, установив application request routing.

После того, как обновите moodle, разберитесь, в чём же основная причина тормозов. Откройте монитор ресурсов, создайте нагрузку на сервер и посмотрите, что загружается под 100% - процессор, память или диск. А там, соответственно, каким из процессов - веб-сервером или базой данных.

Например, если у вас кончается память, то активно начинает использоваться подкачка, от этого возрастает нагрузка на диск, от этого существенно медленнее отдает информацию база данных, и всё тормозит.

Если у вас проблема с тем, что база данных создает большую нагрузку на жесткий диск (при тестировании такое вполне возможно), то такую проблему решать только комплексно - увеличивать память для бд, чтобы лучше кэшировала, (поможет если у вас не express edition), ставить специально под базу данных ssd диски или настраивать raid, выносить бд на отдельный сервер и т.п. Переход с одной БД на другую принципиальных преимуществ в этом случае, скорее всего, не даст.

В ответ на Vadim Dvorovenko

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -
Файл с логими php можете заархивировать, если вы его всё-равно не собираетесь весь читать.
Вот. Но там информация по всем сайтам сервера, с использованием php я так понял (но в принципе отследить можно по названиям файлов moodle php)
Таймаут больше 5 минут устанавливать не стоит - для большинства штатных операций (типа отображение страницы теста) это не нужно, длительные операции вроде восстановления из бэкапа сами увеличивают время (если в настройках php это правильно разрешено). Если у вас больше минуты страница теста открывается, то пользователи будут беситься всё-равно, так что в любом случае нужно разбираться, что и как.
Странно, в docs moodle там как раз и час советуют, на основном час ставил. Спасибо, посмотрю как будет с 5 минутами. А по поводу настроек php, какие параметры увеличивать надо? я по-моему только макс.загрузку файлов увеличивал (post_max_size и upload_max_filesize)
Если сайт и так тормозной, не обновляйтесь через веб-интерфейс, используйте утилиты командной строки. Через командную строку может неделю обновляться, но не вылетит. Обновитесь хотя бы до 2.7, там много оптимизаций сделано по кэшированию, сразу нагрузка должна будет уменьшиться. (только про бэкапы не забывайте)
Вот тут тяжелее, так как честно не знаю как обновлять moodle через ком.строку Windows Server, все время через web-интерфейс делал. Аж стыдно
Проверьте, не включен ли у вас режим дизайнера тем. При нем отключается кэширование css и во много раз возрастает нагрузка.
Отключен, кэширование js включено
Выясните, сколько в среднем у вас работает cron. Так, если он запускатеся каждую минуту, а работает по 5 минут, то будет получаться, что у вас фоном работает 4 очень ресурсоемких процесса. А cron может тормозить, например, из-за того что php отправляет почту напрямую, а не через почтовый сервер. Это, конечно, не ваш случай, просто для примера.

Cron уже писал запустить не могу, долго грузится, потом ошибка 500. Вся проблема в том, что мне этот сервер остался по наследству, скорей всего он там даже не настроен

Разберитесь в php - обновитесь до 5.5. В нём должно быть расширение opcache, тоже должна снизиться нагрузка. 

Этим займусь в первую очередь
Например, если у вас кончается память, то активно начинает использоваться подкачка, от этого возрастает нагрузка на диск, от этого существенно медленнее отдает информацию база данных, и всё тормозит.
Если у вас проблема с тем, что база данных создает большую нагрузку на жесткий диск (при тестировании такое вполне возможно), то такую проблему решать только комплексно - увеличивать память для бд, чтобы лучше кэшировала, (поможет если у вас не express edition), ставить специально под базу данных ssd диски или настраивать raid, выносить бд на отдельный сервер и т.п. Переход с одной БД на другую принципиальных преимуществ в этом случае, скорее всего, не даст.
Заметил на сервере только, что нагружается сильно процессор
В ответ на Alexander Matveyev

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Cron уже писал запустить не могу, долго грузится, потом ошибка 500. Вся проблема в том, что мне этот сервер остался по наследству, скорей всего он там даже не настроен

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

В ответ на Vadim Dvorovenko

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -
Как тогда безболезненно (с наименьшей нагрузкой)  это вылечить, можно ли запустить cron так, чтобы он обрабатывал данные за последний день, месяц, хотя бы?
В ответ на Alexander Matveyev

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

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

В ответ на Vadim Dvorovenko

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -

Ув. мудлеры, понимаю что не на тот форум пишу (перечитал статьи, faq, форумы, не помогло), но надеюсь на понимание. Вот ситуация такая. Пробовал установить новую версию php 5.5 для этого сервера (Windows Server Enterprise SP2, IIS 7.0, MSSQL 2008), автоматом через web installer не получается:


Помню на другом сервере была та же проблема (windows server 2008 r2), на то время сетовал на несостыковку драйвера php для mssql (была старая версия драйвера поэтому там поставил mysql и через web installer все отлично встало и php и moodle. правда она сама поставила версию сначала 5.3, потом 5.5 и все работает до сих пор хорошо).

Далее попробовал вручную установить php 5.5, драйвера для ms sql 3.2 (readme почитал, драйвера скинул nts55), настроил php.ini, установил php manager для iis, подключил через Handler Mappings новую версию php, установил таймауты CGI и настройки FastCGI, затем через php manager, выбираю версию 5.5, пишет предупреждение о папке с расширениями, что надо заменить на 5.5 (extension_dir), и ... PHP не работает!!!



Вручную установка PHP 5.5 на iis уже в который раз не удалась( Не знаю как сейчас быть. Сервер можно сказать "скинули" по наследству, и Apache поставить не дадут. Eще и несколько сайтов работает на PHP 5.3, а 5.5 не подхатывает. Вернул пока все на место (php 5.3), настроил библиотеки там. Попробую потом настроить url rewriting и включить slash arguments, но c PHP вот такая беда. Ниже прикрепил настройки php.ini двух версий (5.3 работает, 5.5 нет)
В ответ на Alexander Matveyev

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Vadim Tabunshchik -
Изображение пользователя Developers
  1. автоматом через web installer не получается - не использую, имхо, лишняя, абсолютно ненужная "приблуда". Проще установить и настроить руками. Инструкций в сети  масса. Там всего-то дел - установить РНР в "любимую" директорию, назначить php-cgi.exe модулем для обработки *.php в диспетчере служб IIS и установить документ по умолчанию index.php
  2. несколько сайтов работает на PHP 5.3, а 5.5 не подхатывает - посмотрите на работающем сервере в phpinfo, откуда подгружается php.ini.
    ris
    Для настройки нескольких версий РНР попробуйте использовать PHP Manager for IIS. Проще переключить обработчик для сайта в диспетчере служб IIS, чем переустанавливать РНР полностью.
    Кроме того, иногда система ищет php.ini в %SystemRoot%, а не в каталоге установки РНР, тогда нужно создать переменную PHPRC, указав в ней путь к папке с php.ini. Вот тут почитайте:http://www.deepshiftlabs.com/dev_blog/?p=1880&lang=ru
    ЗЫ: у меня почему-то работает без переменной PHPRC
  3. По поводу ошибки установки РНР через web installer - попробуйте его кеш почистить
В ответ на Vadim Tabunshchik

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -

Как уже писал, PHP Manager стоит, страницу по умолчанию ставил, при переключении языка php, в настройках меняется и путь к нужному файлу конфигурации (там где установлен php 5.5, при смене на 5.3 автоматом меняет на нужный php.ini в папке с 5.3). Кеш установщика чистил,  к сожалению не помогло

В ответ на Alexander Matveyev

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Vadim Dvorovenko -
Изображение пользователя Developers Изображение пользователя Майнтейнер перевода

Поставьте отдельно apache на каком-нибудь другом порту типа 8080 и попробуйте на нём. Вариант про "не дадут" не очень понимаю - не обязательно его постоянно использовать, просто возможно с ним будет проще отладить запуск php и и нужных библиотек, чтобы потом перенести опыт на iis

В ответ на Vadim Dvorovenko

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -
Вадим, такая политика, Moodle администрировать отдали, а какие там проблемы никого не волнует,  доступ к серверу выпросил, чтобы хотя бы php дали обновить, но и тут проблема. Хотел спросить по поводу запуска cron из командной строки, вроде все прописал (пытаюсь пока cron.php запустить на php5.3, путь указан верный), файл создался но пока пустой уже час. Может не то прописал? Или все так и должно быть?


В ответ на Alexander Matveyev

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -

В cron.log последней строчкой пока:

Starting processing the event queue...

и я так понял это на несколько часов\дней?
В ответ на Alexander Matveyev

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Ella S. -

Про 500 ошибку. А система у Вас скольки битная - 32, 64? Просто вот тут была похожая ошибка из-за того, что система 64х битная.

В ответ на Ella S.

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -
Спустя какое-то время снова задался этой проблемой. После долгих раздумий понял, что что-то упустил. Пересмотрев все еще раз, перелопатив форумы, начал проверять все досконально:
1)
В ответ на Alexander Matveyev

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -

1) Нужно установить Visual C++ 2012 Redistributable х86 и х64 тоже, спасибо Ella S

2) Упустил переменную PHPRC, поправил как тут http://www.deepshiftlabs.com/dev_blog/?p=1880&lang=ru и все заработало (включил opcache, расширения,драйвера mssql под php 5.5, подключил к moodle 2.4.5). Спасибо Вадим!

Стало все работать намного быстрее после перехода на php 5.5.30. Но теперь хотел бы запустить cron, чтобы после его отработки нормально обновиться (только вот не знаю как лучше, сразу на 2.7.13 или сначала на 2.4.х и потом на 2.7.13?). Но происходит ошибки при запуске из консоли, как ее можно победить?

Приложение cron_cl_errors_php55.jpg
В ответ на Alexander Matveyev

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Vadim Tabunshchik -
Изображение пользователя Developers

Имхо, такие ошибки возникают от того, что в php.ini прописаны отсутствующие расширения.

Покажите вывод в консоли команды php -m. Ни на что не ругается? В логах рнр при запуске нет строк типа "Unable to load dynamic library…"?

В ответ на Vadim Tabunshchik

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -
C:\Users\disadmin>php -m
[PHP Modules]
bcmath
calendar
Core
ctype
curl
date
dom
ereg
filter
ftp
gd
gettext
gmp
hash
iconv
json
libxml
mbstring
mcrypt
mhash
mysql
mysqli
mysqlnd
odbc
openssl
pcre
PDO
Phar
Reflection
session
SimpleXML
soap
SPL
sqlsrv
standard
tokenizer
wddx
xml
xmlreader
xmlrpc
xmlwriter
zip
zlib
[Zend Modules]

C:\Users\disadmin
Но у нас еще 5.3 php версия стоит. может от туда подхватывает?
В ответ на Alexander Matveyev

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -
Покажите вывод в консоли команды php -m. Ни на что не ругается? В логах рнр при запуске нет строк типа "Unable to load dynamic library…"?
получается что нет, в логах такого ничего нету

php -v проверил, показывает версию 5.3(( Но для moodle 2.4 у нас же 5.5, и phpinfo срабатывает, на всякий случай логи в сообщении по php5.5 (почистил кеши, пытался запустить cron, что-то много ошибок появилось)

В ответ на Alexander Matveyev

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Vadim Tabunshchik -
Изображение пользователя Developers
показывает версию 5.3

Наверное, эта версия прописалась в системные переменные. И ещё зависит от того, где команду php -v запускаете. Запустите в каталоге установки 5.5 - покажет 5.5

Модулей лишних много подключено, нужно оставить только необходимые для moodle. А вот opcache не подключен и в логах ошибка:

[21-Mar-2016 10:02:56 Europe/Minsk] PHP Warning:  PHP Startup: Invalid library (appears to be a Zend Extension, try loading using zend_extension=php_opcache.dll from php.ini) in Unknown on line 0

Или путь к php_opcache.dll не находит, или версия .dll не подходит.

php -m должна показывать:

....
Zend OPcache
zip
zlib

[Zend Modules]
Zend OPcache

В ответ на Vadim Tabunshchik

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -
И ещё зависит от того, где команду php -v запускаете. Запустите в каталоге установки 5.5 - покажет 5.5
В каталоге php55 не могу запустить, т.к. появляются ошибки "Точка входа в процедуру ... не найдена в библиотеке DLL php5.dll"
В ответ на Alexander Matveyev

Re: Проблемы с сервером (в тестах при отправке - 404, cron и проверка обновлений - 500)

от Alexander Matveyev -
Решил скачать новый дистрибутив (думал может битый какой попался) все от туда же windows.php.net, запустить в нем php.exe, проблемы все те же
В ответ на Alexander Matveyev

Re: Не отрабатывает cron.php из командной строки

от Alexander Matveyev -
Удалось победить установку новой версии php 5.5 ручным способом (для тех, у кого не ставиться автоматом), может кому пригодится: для Windows Server следует изменить путь для переменной среды PHP непосредственно на уровне сервера, а не в IIS.

В итоге: moodle 2.4.5 оживился с новой версией php 5.5 и включенным opcache! На всякий случай убрал хранение логов в БД MS SQL Server. Сайт стал работать шустрее. НО! Т.к. cron не был настроен и сайт работал уже более 1.5 лет, не могу данный сценарий отработать снова(( Запускал и через веб-интерфейс, устанавливал больше тайм-ауты, запускал на несколько недель (2-3) из командной строки и записью логов в файл, в результате все стопорится в начале практически на enrol_cohorts и все!

Вопрос в следующем: что можно сделать? можно ли как-либо запустить данный сценарий другим способом? Можно ли обновить moodle в такой ситуации? Может сначала до последней редакции 2.4.х, а потом до 2.7.13 либо сразу до 2.7.13?
Приложение cron.php.jpg
В ответ на Alexander Matveyev

Re: Не отрабатывает cron.php из командной строки

от clockot kot -

Вот тут еще есть полезный материал про ошибки php . Почитайте, возможно будет полезно. Вообще даже самый идеально написанный код зачастую содержит ошибки, и это нормально, если он функционирует без сбоев. Кстати, еще может помочь вариант с обновлением версии php