Я создал среду chroot ubuntu (используя debootstrap) и начал openoffice как услугу для преобразования файлов с помощью unoconv. Он работает, но он проводит около 20 секунд, чтобы делать конверсии, которые находятся ниже 1 сек вне тюрьмы chroot. Исчерпывая это, я вижу, что это дополнительное время тратится на некоторые операции сокета, истечение которых заканчивается, те же самые операции, которые хорошо работают без среды chroot. Однако аналогичные операции работают нормально.исполняющий сервис (openoffice headless) в chroot медленный
Любое предложение?
начиная сервер (изолированной):
soffice -invisible -headless -nologo -nodefault "-accept=socket,host=localhost,port=8301;urp;StarOffice.ComponentContext" -env:UserInstallation=ootest2
назвав его (в изолированной среде тоже): след
strace unoconv -f pdf -p 8300 simple_test.docx
таймаут:
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
poll([{fd=4, events=POLLOUT}], 1, 0) = 1 ([{fd=4, revents=POLLOUT}])
sendto(4, "M#\1\0\0\1\0\0\0\0\0\0\tlocalhost\6(none)\10mo"..., 47, MSG_NOSIGNAL, NULL, 0) = 47
poll([{fd=4, events=POLLIN}], 1, 5000) = 0 (Timeout)
close(4) = 0
аналогичный след без тайм-аута (то же самое unoconv):
socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
fcntl(4, F_GETFL) = 0x2 (flags O_RDWR)
fcntl(4, F_SETFL, O_RDWR|O_NONBLOCK) = 0
poll([{fd=4, events=POLLOUT}], 1, 0) = 1 ([{fd=4, revents=POLLOUT}])
sendto(4, "M#\1\0\0\1\0\0\0\0\0\0\tlocalhost\6(none)\10mo"..., 47, MSG_NOSIGNAL, NULL, 0) = 47
poll([{fd=4, events=POLLIN}], 1, 5000) = 1 ([{fd=4, revents=POLLIN}])
ioctl(4, FIONREAD, [47]) = 0
recvfrom(4, "M#\201\202\0\1\0\0\0\0\0\0\tlocalhost\6(none)\10mo"..., 1024, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, [16]) = 47
close(4) = 0
деталь корневая:
- использования dchroot, чтобы использовать его как обычный пользователь
установленного Dev, Proc, и т.д., как (Fstab):
/TMP/вар/местные/chrootest/tmp
/dev/var/local/chrootest/dev
/sys/var/local/chrootest/sys
proc-chroot/Вар/местный/chrootest/Proc
devpts-корневой/вар/местный/chrootest/DEV/Очки
Операция сокета, которая не работает, является поиском DNS. В частности, он пытается подключиться к DNS-серверу на уровне 127.0.0.1. У вашей chroot'ed среды есть '/ etc/hosts'? – ZoogieZork
Да, он имеет/etc/hosts и включает в себя строку «127.0.0.1 \t localhost» Я также подумал, что это что-то вроде поиска DNS/DNS, поэтому я поставил простой сервер (требуется «сокет», ставит TCPServer. новый («localhost», 8400) .accept.readline) и простой клиент (требуется «сокет», TCPSocket.new («localhost», 8400) .write («hi \ n»)) в ruby, chrooted и it работал. – Luis
Из-за идей, извините :(Похоже, что-то возможно для OpenOffice. – ZoogieZork