9 мая 2015 г.

MDaemon 15.0.1, IIS, IE8 и аццкий sed

После очередного обновления (15.0.1) MDaemon резко присел на процессор, доведя загрузку до 100%. Причем происходило это не сразу, через чаc-другой работы. MDaemon работает через IIS.
Путем исследования процессов было выяснено, что процессор загружен w3wp.exe, который упорно что-то читает и пишет. Путем исследования с помощью processhacker выяснено, что он читает и пишет ini-файлы.
Эти файлы, обычно содержащие десяток строк с настройками пухли за счет такой переменной:
indexOf=function(e,g){var j;if(this==null)throw new TypeError('"this" is null or not defined');var k=Object(this),l=k.length>>>0;if(l===0)return-1;
и потом - "j=+g||0;Math.abs(j)===Infinity&&(j=0);if(j>=l)return-1;for(j=Math.max(j>=0?j:l-Math.abs(j),0);j
Последняя строчка повторялась сколько угодно раз. Файлы достигали 10 Mb за штуку.
IIS в лице веб-интерфейса MDaemon дурел от необходимости читать и писать их все - 1000 штук )))
Запустил такие команды , чтобы почистить содержимое файлов:
cd \MDaemon\Users
c:\usr\bin\find -name "User.ini" -exec sed --text --in-place=.bak /return-1/d {} ;
c:\usr\bin\find -name "User.ini" -exec unix2dos {} ;
Вторая команда нужна из-за косого sed. Не удалось найти win32 sed с поддержкой одновременно --binary и --in-place )). И потом -
c:\usr\bin\find -name "User.ini.bak" -exec rm {} ;
Нагрузка упала со 100% до 3-5%.
Надеюсь, что больше сюрпризов от MDaemon (в ближайшее время по крайней мере) не будет.