Я только что установил новый сервер Samba 3.3 на виртуализированном компьютере с CentOS 5.4 и обнаружил, что у него возникают проблемы с производительностью при очень определенных обстоятельствах. У моего босса Macbook Pro с Mac OSX 10.6. Когда он пытается ... сказать ... передать файл размером 30 мегабайт на сервер, это мучительно медленно (15+ секунд).
Тем не менее, вот пара других интересных данных:
Я уже пробовал некоторые приемы ускорения, перечисленные в Google, такие как socket options = TCP_NODELAY
, read raw
и write raw
, но ни один из них, похоже, не влияет на итоговую скорость. Все брандмауэры настроены правильно, виртуальный хост передает весь мостовой трафик на соответствующий виртуальный сервер, а «Samba» разрешена на самом виртуальном сервере. Я также просмотрел файл конфигурации старого сервера, и ничего не выскочило у меня как "ага, этот вот почему это так быстро ».
Есть другие идеи?
РЕДАКТИРОВАТЬ: Новая информация. Я обнаружил, что мой компьютер использует Wi-Fi вместо Ethernet. Когда я переключился на Ethernet, моя производительность на сервере стала идентична производительности моих боссов во всех аспектах (быстрый SFTP, супер-медленная запись Samba и т. Д.).
Устанавливать unix extensions = no
Мы дополнительно добавляем
strict locking = no
blocking locks = no
kernel oplocks = no
posix locking = no
для нашей окружающей среды. Перед изменением настроек по умолчанию убедитесь, что вы знаете, что делаете. Как всегда, man smb.conf
и воспользуйтесь списками.
Присоединиться здесь:
https://lists.samba.org/mailman/
Поищи здесь:
http://marc.info/?l=samba
http://marc.info/?l=samba-technical
Возможно ли, что коммутатор Ethernet, к которому вы подключаетесь, неправильно согласовывает полудуплексное соединение с компьютерами Mac? Ваше описание (высокая скорость в одном направлении, низкая в другом, ухудшается, если вы пытаетесь отправить данные очень быстро) звучит так, как я видел, когда один конец (переключатель в вашем случае) находится в полудуплексном режиме, а другой ( Mac) пытается использовать полнодуплексный режим.
Вы можете проверить режим на Mac с помощью ifconfig
(найдите строку, в которой написано что-то вроде "media: autoselect (1000baseT) status: active"; то, как вы проверяете (/ можете ли вы проверить) на коммутаторе, зависит от его интерфейса управления (если есть). Вы также можете чтобы диагностировать это, используя что-то вроде netstat -p tcp -s
- если это проблема, вы, вероятно, увидите много ретрансляций.
Примечание: если сервер и Mac находятся на разных коммутаторах, также возможно, что возникла проблема с соединением между коммутаторами.
Скорость виртуальной сетевой карты просто искусственная, она немного хранится в регистре «карты» и используется только гостем для отображения обычного статуса «скорости». Он никогда не используется для фактического ограничения фактической скорости «карты», в qemu / kvm нет кода для этого - пакеты всегда передаются с максимально возможной скоростью. Да, разные «карты» по-разному влияют на использование ЦП и разную эффективность, что приводит к разным скоростям, но при достаточно быстром ЦП можно отправлять данные на скоростях GigE, используя сетевую карту, эмулированную pcnet 10 Мбит / с.