LINUX.ORG.RU
ФорумAdmin

Помогите расшифровать strace - тормозит при запуске mc


0

0

Запускал strace -r mcedit 1.txt 2> log

В лог наблюдаю следущее:

     0.000034 munmap(0xb7ba4000, 131072) = 0
     0.000066 open("/etc/ld.so.cache", O_RDONLY) = 3
     0.000046 fstat64(3, {st_mode=S_IFREG|0644, st_size=58541, ...}) = 0
     0.000072 mmap2(NULL, 58541, PROT_READ, MAP_PRIVATE, 3, 0) = 0xb7bb5000
     0.000037 close(3)                  = 0
     0.000046 open("/lib/libnss_dns.so.2", O_RDONLY) = 3
     0.000049 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0\16\0"..., 512) = 512
     0.000059 fstat64(3, {st_mode=S_IFREG|0755, st_size=18284, ...}) = 0
     0.000067 mmap2(NULL, 20616, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7baf000
     0.000042 mmap2(0xb7bb3000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0x3) = 0xb7bb3000
     0.000074 close(3)                  = 0
     0.000045 open("/lib/libresolv.so.2", O_RDONLY) = 3
     0.000048 read(3, "\177ELF\1\1\1\0\0\0\0\0\0\0\0\0\3\0\3\0\1\0\0\0\0&\0\000"..., 512) = 512
     0.000057 fstat64(3, {st_mode=S_IFREG|0755, st_size=64568, ...}) = 0
     0.000063 mmap2(NULL, 76052, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_DENYWRITE, 3, 0) = 0xb7b9c000
     0.000046 mmap2(0xb7bab000, 8192, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_DENYWRITE, 3, 0xe) = 0xb7bab000
     0.000122 mmap2(0xb7bad000, 6420, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_FIXED|MAP_ANONYMOUS, -1, 0) = 0xb7bad000
     0.000055 close(3)                  = 0
     0.000144 munmap(0xb7bb5000, 58541) = 0
     0.000139 gettimeofday({1198547925, 844546}, NULL) = 0
     0.000081 socket(PF_INET, SOCK_DGRAM, IPPROTO_IP) = 3
     0.000070 connect(3, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("10.18.0.1")}, 28) = 0
     0.000081 fcntl64(3, F_GETFL)       = 0x2 (flags O_RDWR)
     0.000037 fcntl64(3, F_SETFL, O_RDWR|O_NONBLOCK) = 0
     0.000037 gettimeofday({1198547925, 844846}, NULL) = 0
     0.000043 poll([{fd=3, events=POLLOUT, revents=POLLOUT}], 1, 0) = 1
     0.000055 send(3, "\363\5\1\0\0\1\0\0\0\0\0\0\4eth0\0\0\1\0\1", 22, 0) = 22
     0.000369 poll([{fd=3, events=POLLIN}], 1, 5000) = 0
     4.997985 gettimeofday({1198547930, 843303}, NULL) = 0
     0.000046 poll([{fd=3, events=POLLOUT, revents=POLLOUT}], 1, 0) = 1
     0.000045 send(3, "\363\5\1\0\0\1\0\0\0\0\0\0\4eth0\0\0\1\0\1", 22, 0) = 22


Смушает пауза в 5 секунд. Я подозреваю, что проблемы с резолвингом, но не могу понять, 
какой хост он не может резолвнуть (и зачем, главное?). Аналогичные проблемы при простом запуске mc. 

Конфиги mc потер, так что дело не в них, явно. 

mc 4.6.1, gentoo. 

В /etc/hosts есть 
127.0.0.1       localhost localhost.localdomain
и есть имена для обоих интерфейсов
★★★★★

Ну убери dns из /etc/nssswitch.conf, и попробуй

А ищет он наверняка hostname. Что говорит hostname и hostname --fqdn?

tailgunner ★★★★★
()

Посмотри настройки самбы. У меня такое было, когда я там в listen address вписал неправильный хостнейм, в результате чего mc тормозил при запуске из-за таймаута dns-запроса на несуществующее имя.

gaa ★★
()

send(3, "\363\5\1\0\0\1\0\0\0\0\0\0\4eth0\0\0\1\0\1", 22, 0) = 22

tcpdump + strace -s 1000

birdie ★★★★★
()

> send(3, "\363\5\1\0\0\1\0\0\0\0\0\0\4eth0\0\0\1\0\1", 22, 0) = 22

как будто хочет разрезолвить имя eth0

anonymous
()

В крайнем случае можно собрать mc без поддержки samba...

BigBiker
()
Ответ на: комментарий от anonymous

Да, такое иногда бывало: когда-то давным-давно и у меня mc очень хотело определить имя eth0:0.local.domain. Зачем ему это разбираться не стал, просто прописал в /etc/hosts и всё. Но факт остаётся фактом.

spirit ★★★★★
()

хм.. может и не существенно, но вроде 127.0.0.1 localhost localhost.localdomain

записывать надо в обратном порядке, т.е.

айпи фэкудээн алиас

тоесть

127.0.0.1 localhost.localdomain localhost

sa22
()

google утверждает, что mc пытается разрезолвить eth0 и другие имена интерфейсов в случае, если он собран с поддержкой smbfs. Утверждается, что код в mc, который читает конфигурацию самбы старый, и считает, что опция "interfaces" может содержать только ip-адреса.

Попробуйте проверить это утверждение (поправить конфиг самбы или прописать в /etc/hosts записи с именами интерфейсов).

mky ★★★★★
()
Ответ на: комментарий от mky

mc-4.6.1-r4, в smb.conf "interfaces = eth0:0 lo", при запуске mc "tcpdump -ni any port 53" никаких попыток определить eth0* не выдает, в том числе и strace ничего про eth0 не пишет.
mc собран с поддержкой samba, дистрибутив - gentoo.

Загадочный этот mc...

spirit ★★★★★
()

Загадочный этот mc. Сейчас начал запускаться быстрее (с полсекунды где-то). Если вырубить named, запускается совсем моментом. Вчера, когда постил, на том сервере инета не было. Подозреваю, что он в инет что-то лазил резолвить.

Попробую еще без самбы собрать.

Если найду причину, отпишусь тут (rss на каментах рулит)

AngryElf ★★★★★
() автор топика
Ответ на: комментарий от spirit

А eth0:0.local.domain уже убран из /etc/hosts? Хотя может у вас mc патчнный...

Так я быстро просмотрел исходники mc-4.6.1, там вроде дейстивительно тупо на каждое значение из параметра interfaces вызывается функция interpret_addr2(), которая смотрит ip-адрес или нет, и пытается преобразовать с помощью gethostbyname().

mky ★★★★★
()
Ответ на: комментарий от AngryElf

>Я добавил попробовал - ничего не изменило.

А что прописано в конфиге самбы в параметре interfaces? И в файле /etc/nsswitch.conf какой порядок dns?

И раз уже определилось, что mc лезит к DNS, то перед запуском проще запускать tcpdump, чем strace, тогда сразу будет виден DNS-запрос.

P.S. А по поводу eth0:0.local.domain в /etc/hosts я спрашивал у spirit, так как это он писал: "mc очень хотело определить имя eth0:0.local.domain. Зачем ему это разбираться не стал, просто прописал в /etc/hosts и всё."

mky ★★★★★
()
Ответ на: комментарий от mky

> А что прописано в конфиге самбы в параметре interfaces?

interfaces = eth0

> И в файле /etc/nsswitch.conf какой порядок dns?

hosts: files dns

networks: files dns

В следущий раз буду мучать dns tcpdump'ом. Ступил что-то в этот раз...

AngryElf ★★★★★
() автор топика
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.