Добрый день сообществу!
Случилась такая не очень приятная история: в одном из филиалов стоял старенький сервачок в качестве inet-gw (bind, squid, socks5, dhcpd, sendmail, openvpn)
uname -a
FreeBSD xxxxxxxx 6.3-PRERELEASE FreeBSD 6.3-PRERELEASE #1: Tue Oct 30 04:56:47 EET 2007 root@xxxxxxxx:/usr/obj/usr/src/sys/XXXXXXXX i386
отрывок из dmesg:
CPU: Pentium II/Pentium II Xeon/Celeron (334.09-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0x660 Stepping = 0
Features=0x183f9ff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,MMX,FXSR>
real memory = 67108864 (64 MB)
avail memory = 56102912 (53 MB)
Понимаю, что никакая машинка, но ставилось это еще году в 2005...
Для обмена файлами позже в процессе работы на него была еще установлена в один прекрасный день samba-3.0.21b,1, из-за некоторых особенностей работы винды. Все это работало вполне терпимо, состав народа менялся от 3 до 10 +-3 человек, но сервер стал периодически падать. Чтобы не мучить дедушку и отправить его на заслуженный отдых, в период, когда народа стало больше 10 человек, была выделена новая машинка:
CPU: Intel(R) Celeron(R) CPU 1.70GHz (1699.95-MHz 686-class CPU)
Origin = "GenuineIntel" Id = 0xf13 Stepping = 3
Features=0x3febfbff<FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CLFLUSH,DTS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM>
real memory = 259981312 (247 MB)
uname -a
FreeBSD xxxxxxxx_new 7.2-STABLE FreeBSD 7.2-STABLE #8: Wed Sep 23 16:22:06 EEST 2009 root@xxxxxxxx_new:/usr/obj/usr/src/sys/XXXXXXXX i386
На нее перетащили почти все сервисы, из-за замудреной конфигурации на старом ящике оталась только почта для дальнейшего переноса в спокойной вдумчивой обстановке. Самое удивительное, что "дедушка" стал реже перегружаться, а новый сервер стал падать с периодичностью, примерно, как раньше "дедушка". В последнее время ребуты участились. Эксперимент показал, что попытки залить на шару большой файл практически гарантированно приводит к ребуту или, иногда, вмертвую вешает сервер - не работает даже консоль. Проверялось на исталляторе OpenOffice.org 3.2 win - чуть больше 150 метров. В то же самое время, по ssh эти файлы залились без всяких тараканов. С шары сливаются тоже без проблем. Самбу пересобирал - сейчас стоит 3.0.37.
/usr/local/etc/smb.conf:
[global]
workgroup = INTRANS
netbios name = xxxxxxxx
security = user
hosts allow = 192.168.0. 127.
load printers = no
guest account = nobody
log file = /var/log/samba/log.%m
max log size = 500
socket options = TCP_NODELAY SO_KEEPALIVE SO_BROADCAST SO_RCVBUF=4096 SO_SNDBUF=4096
interfaces = rl0
local master = yes
os level = 60
preferred master = yes
dns proxy = no
display charset = koi8-u
unix charset = koi8-u
dos charset = UTF-8
max open files = 25000
[common]
comment = Обменник
path = /var/samba/common
read only = No
create mask = 0770
directory mask = 0770
browseable = yes
writable = yes
guest ok = yes
Если ставить security = user - частота падений увеличивается.
В log.smbd периодически падает такое:
[2010/02/17 09:48:02, 0] lib/util_sock.c:set_socket_options(261)
Failed to set socket option TCP_NODELAY (Error Connection reset by peer)
[2010/02/17 09:48:02, 0] lib/util_sock.c:get_peer_addr(1224)
getpeername failed. Error was Socket is not connected
[2010/02/17 11:35:57, 0] smbd/server.c:open_sockets_smbd(531)
open_sockets_smbd: accept: Software caused connection abort
в log.nmbd - в основном отчеты о том, что самба занимается выборной деятельностью, хотя случается и такое:
[2010/02/15 15:08:37, 0] libsmb/nmblib.c:send_udp(793)
Packet send failed to 192.168.0.14(137) ERRNO=No buffer space available
[2010/02/15 15:08:37, 0] nmbd/nmbd_packets.c:reply_netbios_packet(992)
reply_netbios_packet: send_packet to IP 192.168.0.14 port 137 failed
[2010/02/15 15:08:37, 0] libsmb/nmblib.c:send_udp(793)
Packet send failed to 192.168.0.14(137) ERRNO=No buffer space available
[2010/02/15 15:08:37, 0] nmbd/nmbd_packets.c:reply_netbios_packet(992)
reply_netbios_packet: send_packet to IP 192.168.0.14 port 137 failed
[2010/02/15 15:08:37, 0] libsmb/nmblib.c:send_udp(793)
Packet send failed to 192.168.0.21(137) ERRNO=No buffer space available
[2010/02/15 15:08:37, 0] nmbd/nmbd_packets.c:reply_netbios_packet(992)
reply_netbios_packet: send_packet to IP 192.168.0.21 port 137 failed
[2010/02/15 15:12:05, 0] nmbd/nmbd.c:main(723)
в /var/log/messages полно записей такого плана:
Feb 18 10:19:43 xxxxxxxx_new smbd[5669]: getpeername failed. Error was Socket is not connected
Feb 18 10:19:43 xxxxxxxx_new smbd[5669]: [2010/02/18 10:19:43, 0] lib/access.c:check_access(327)
Feb 18 10:19:43 xxxxxxxx_new smbd[5669]: [2010/02/18 10:19:43, 0] lib/util_sock.c:get_peer_addr(1224)
Feb 18 10:19:43 xxxxxxxx_new smbd[5669]: getpeername failed. Error was Socket is not connected
Feb 18 10:19:43 xxxxxxxx_new smbd[5669]: Denied connection from (0.0.0.0)
Feb 18 10:19:43 xxxxxxxx_new smbd[5669]: [2010/02/18 10:19:43, 0] lib/util_sock.c:get_peer_addr(1224)
Feb 18 10:19:43 xxxxxxxx_new smbd[5669]: getpeername failed. Error was Socket is not connected
Feb 18 10:19:43 xxxxxxxx_new smbd[5669]: Connection denied from 0.0.0.0
Feb 18 10:19:43 xxxxxxxx_new smbd[5669]: [2010/02/18 10:19:43, 0] lib/util_sock.c:write_data(562)
Feb 18 10:19:43 xxxxxxxx_new smbd[5669]: write_data: write failure in writing to client 0.0.0.0. Error Broken pipe
Feb 18 10:19:43 xxxxxxxx_new smbd[5669]: [2010/02/18 10:19:43, 0] lib/util_sock.c:send_smb(761)
Feb 18 10:19:43 xxxxxxxx_new smbd[5669]: Error writing 5 bytes to client. -1. (Broken pipe)Машин с адресом 0.0.0.0 в сети нет, tcpdump трафика с такими адресами не показывает. Есть у мну подозрение, что завелся какой-то новый зверь из вирусни, но ни drweb, ни касперский ничего не находят... В другом филиале стоит похожая конфигурация с аптаймом до двух-трех месяцев, если свет не отрубают... Если у кого-нибудь есть мысли по данной ситуации - буду очень признателен за помощь.
Я бы порекомендовал бы увелисить размер буфера
socket options = SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192
smb ports = 139
wins support = yes
name resolve order = wins dns bcast
А также как расрешается имя копьютера, 0.0.0.0 все-таки похоже на броадкаст
> Я бы порекомендовал бы увелисить размер буфера
> socket options = SO_KEEPALIVE SO_RCVBUF=8192 SO_SNDBUF=8192
> smb ports = 139
> wins support = yes
> name resolve order = wins dns bcast
> А также как расрешается имя копьютера, 0.0.0.0 все-таки похоже на броадкастбродкаст с таким адресом - на мой взгляд, больше похоже на вирус, т.к. винда обычно использует бродкасты в пределах сети, а тут уж прям замах на весь интернет...
Вроде для броадкастов 255.255.255.255 "на весь тырнет" =)
0.0.0.0 скорее говорит о том, что он кого-то не нашёл и адрес не определил.
max open files должны быть нормально настроены не только в самбе, но и глобально
%sysctl -a | grep "maxfiles"
kern.maxfiles: 12288
kern.maxfilesperproc: 11059Убедитесь что вам нужно socket options (заремарьте и сравните падучесть, а заодно и скорость. ИМХО скорость по дефолту будет выше).
prerelease и какая-то бета самбы тоже не самая стабильная вещь, обновитесь чтоли?
Ну и судя по тому что у вас там электронка и что-то ещё болтаются, гляньше TOP, может у вас тупо оперативы нехватает?
>max open files должны быть нормально настроены не только в самбе, но
>и глобально
>%sysctl -a | grep "maxfiles"
>kern.maxfiles: 12288
>kern.maxfilesperproc: 11059
>
>Убедитесь что вам нужно socket options (заремарьте и сравните падучесть, а заодно
>и скорость. ИМХО скорость по дефолту будет выше).Привычка использовать socket options сохранилась еще с FreeBSD 4.3 - какая тогда версия самбы была я уже не помню. Не говоря уже о том, что на линуксе - еще раньше (ядра 1.0.х). Как-то из практики использования скорость работы с указанием этих параметров была выше, чем без них. С тех пор давно не проверял - просто перетаскивал из конфига в конфиг...
>prerelease и какая-то бета самбы тоже не самая стабильная вещь, обновитесь чтоли?Самба примерно трехнедельной давности из портов. Что называется "фирма рекомендует" куда свежее-то? 3.2.х, 3.3.х, 3.4.х использовать пока не вижу особых причин: домен изображать мне не нужно, а чем они лучше текуще3.0.71 мне никто рассказть не смог.
>Ну и судя по тому что у вас там электронка и что-то
>ещё болтаются, гляньше TOP, может у вас тупо оперативы нехватает?CPU: 0.0% user, 0.0% nice, 0.0% system, 0.0% interrupt, 100% idle
Mem: 59M Active, 65M Inact, 38M Wired, 104K Cache, 34M Buf, 73M Free
Swap: 512M Total, 512M Free
Видимо глюки для вас не являются причиной для обновления софта на исправленный.
>max open files должны быть нормально настроены не только в самбе, но и глобальноЗолотые слова. Но не только этот параметр, все должно быть в гармонии.
>Убедитесь что вам нужно socket options (заремарьте и сравните падучесть, а заодно
>и скорость. ИМХО скорость по дефолту будет выше).Вот и меня мучают смутные сомнения ... всё таки со времен 4-ки много чего изменилось :)
>SO_RCVBUF=4096 SO_SNDBUF=4096
Во первых - мало, во вторых - зачем? Памяти у тебя хватает - убери это, таким образом разрешив брать вплоть до лимита оси. Его кстати тоже проверь.
Когда у вас сервер ложиться на пинги он отвечает?
Если нет, то очень вероятно что узкое место у вас сетевые буфера - проверьте в системе и socket options.