LINUX.ORG.RU

Сообщения Nao

 

1c очень долго открывает файлы на NFS, CIFS

По сути вопрос мало касается самой 1с.
Открываю в конфигураторе 1С 8.3 файл конфигурации (*.cf). Размером он около 200-300 Мб.

Если открывать с локальной фс, то открытие происходит за несколько секунд.
Если открывать с nfs или cifs то открытие занимает минут 10 (sic!).

Моя машина и NAS с файлами находятся в сети 100Mbit/s.
Копирование файла с NFS на локальную фс идёт со скоростью близкой к 80-90Mbit/s.

Далее рассматриваем открытие файла на nfs3:
С помощью strace -cw выясняем что очень долго выполняется read:

% time     seconds  usecs/call     calls    errors syscall
------ ----------- ----------- --------- --------- ----------------
 57.41 2007.728556      478600      4195      1538 futex
 28.74 1005.053317      434900      2311           epoll_wait
 13.04  455.978200         596    764976        25 read
  0.41   14.455605          14   1038231           lseek
(Насколько я понял futex и epoll_wait тут вообще не причём, они похоже не связаны с тормозами и время исполнения у них слишком большое)

Если просто сделать strace и посмотреть что делается с нашим файловым дескриптором то можно увидеть что-то такое:

open("/mnt/nas/foo/bar/1Cv8.cf", O_RDONLY) = 83 <0.000631>
fcntl(83, F_GETFD)                = 0 <0.000004>
fcntl(83, F_SETFD, FD_CLOEXEC)    = 0 <0.000004>
flock(83, LOCK_SH|LOCK_NB)        = 0 <0.000007>
open("/mnt/nas/foo/bar/1Cv8.cf", O_RDWR) = 84 <0.000616>
fcntl(84, F_GETFD)                = 0 <0.000017>
fcntl(84, F_SETFD, FD_CLOEXEC)    = 0 <0.000004>
fcntl(84, F_SETLK, {type=F_WRLCK, whence=SEEK_SET, start=4294967296, len=1}) = 0 <0.000012>
Целых два дескриптора на один файл.
На кой чёрт открывается второй с O_RDWR я понятия не имею, ибо менять файл 1С-ка всё равно не может.

И потом идёт куча таких вызовов:

lseek(83, 0, SEEK_END)            = 211404996 <0.000005>
lseek(83, 16, SEEK_SET)           = 16 <0.000004>
read(83, "\r\n00057a80 00057a80 7fffffff \r\n", 31) = 31 <0.000007>
lseek(83, 47, SEEK_SET)           = 47 <0.000004>
read(83, "\257z\5\0.{\5\0\377\377\377\177", 12) = 12 <0.000004>
lseek(83, 0, SEEK_END)            = 211404996 <0.000004>
lseek(83, 359087, SEEK_SET)       = 359087 <0.000003>
read(83, "\r\n00000060 00000060 7fffffff \r\n", 31) = 31 <0.001051>

Т.е. мы постоянно прыгаем в разные места файла и делаем read небольшими порциями (32 байта и меньше).
Таким образом читается весь файл (200-300 мегабайт).

Насколько я понимаю сетевые фс NFS/CIFS на такое не рассчитаны?

Способ обхода
Пока писал пост вроде нашёл решение, хотя хотелось бы попробовать другие и лучше понять почему происходят тормоза.

Чтобы всё работало почти так же быстро как работает локально делаем следующее:

  1. Настраиваем FS-Cache
  2. Монтируем NFS со следующими опциями: vers=4,fsc,ro

fsc - включаем кэширование через FS-Cache
vers=4 - на третьей кэширование с нашим файлом не работает, по-видимому из-за того что 1с открывает дескриптор на чтение/запись; в документации по FS-Cache написано что на NFSv3 кэш на файле отрубается пока открыт R/W дескриптор, а на NFSv4 всё ок.
ro - связано с одним тупым багом, из-за которого нельзя из 1с открывать файлы на NFSv4 если она смонтирована в r/w, к сабжу не относится.

С CIFS я ничего не придумал, хотя мне он особо и не нужен.
С NFSv3 тоже ничего не получается из-за того что файл открывается r/w и кэширование не работает.

 , ,

Nao
()

Провайдер блочит https или же просто тупит сервер?

Предыстория:

( читать дальше... )



Проблема в том что невозможно установить соединение с https://riotgamespatcher-a.akamaihd.net
Это какой-то контент провайдер, и там видимо используется GeoIP, т.к. со своего компа и с VPS в другой стране получаю разные ip для этого хоста.
Выбираю IP 88.221.144.146 для чистоты эксперимента.

Делаю:

openssl s_client -connect 88.221.144.146:443

Вывод:
CONNECTED(00000003)
write:errno=104
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 308 bytes
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
    Protocol  : TLSv1.2
    Cipher    : 0000
    Session-ID:
    Session-ID-ctx:
    Master-Key:
    Key-Arg   : None
    PSK identity: None
    PSK identity hint: None
    SRP username: None
    Start Time: 1463088856
    Timeout   : 300 (sec)
    Verify return code: 0 (ok)
---

Вывод tcpdump:
01:53:12.535528 IP 192.168.1.2.51349 > 88.221.144.146.443: Flags [S], seq 1174005864, win 29200, options [mss 1460,sackOK,TS val 148474721 ecr 0,nop,wscale 7], length 0
01:53:12.617011 IP 88.221.144.146.443 > 192.168.1.2.51349: Flags [S.], seq 3327165184, ack 1174005865, win 28960, options [mss 1460,sackOK,TS val 1808023594 ecr 148474721,nop,wscale 5], length 0
01:53:12.617045 IP 192.168.1.2.51349 > 88.221.144.146.443: Flags [.], ack 1, win 229, options [nop,nop,TS val 148474802 ecr 1808023594], length 0
01:53:12.617614 IP 192.168.1.2.51349 > 88.221.144.146.443: Flags [P.], seq 1:309, ack 1, win 229, options [nop,nop,TS val 148474803 ecr 1808023594], length 308
01:53:12.699505 IP 88.221.144.146.443 > 192.168.1.2.51349: Flags [.], ack 309, win 939, options [nop,nop,TS val 1808023676 ecr 148474803], length 0
01:53:12.701212 IP 88.221.144.146.443 > 192.168.1.2.51349: Flags [R], seq 3327165185, win 0, length 0
01:53:12.701365 IP 88.221.144.146.443 > 192.168.1.2.51349: Flags [R], seq 3327166625, win 0, length 0
01:53:12.701425 IP 88.221.144.146.443 > 192.168.1.2.51349: Flags [R], seq 3327168065, win 0, length 0

В конце три подозрительных RST пакета.
Такое бывает при нормальном закрытии соединения?

Тоже самое с VPS проходит без ошибок.
Это меня провайдер фильтрует как-то криво или может просто akamaihd.net тупит?
Провайдер - Башинформсвязь, он вроде под Ростелекомом.

К сожалению на следующий день всё уже заработало, так что теперь возможен только ретроспективный анализ. Помечаю как «решённое», хотя конечно ничего не решено.

 , , ,

Nao
()

Посоветуйте ситему для автоматизации сборки проекта на 1С

Хочу найти замену gnu make для проекта. Проект, внезапно, написан на 1С, так что интеграция системы сборки с языком/компилятором отпадает.

Надо:
Запускать бинарь 1С с кучей разных параметров, на входе будут файлы/каталоги, на выходе файлы/каталоги. Запускать много раз с разными параметрами.
Должно работать на linux и windows. Причём на оффтопике желательно без костылей вроде cygwin.
Уметь в зависимости вида «файл» и «каталог».
Уметь в параллельность.
На выходе может быть каталог, а не файл.
Уметь удалять выходные файлы/каталоги в случае ошибки.
Уметь простые, os-независимые файловые операции, типо скопировать файл и т.д.
Чуть более вменяемый синтаксис чем у gnu make.

Еще есть такая особенность: у меня 5 таких однотипных проектов, правила сборки которых почти одинаковые.
Сейчас для них есть 5 мейкфайлов плюс 1 общий, который подключается через include.
Выглядит всё это не очень красиво.
Возможно нужна какая-то шаблонизация(?). Не придумал ещё как это лучше сделать.

 , build automation,

Nao
()

Сайт для скринкастов терминальных сессий

Наткнулся случайно на сайт: https://asciinema.org/
Это вроде как script+wgetpaste+pastebin.

Можно записывать терминальные сессии типо как это делает script и выкладывать на их сайт.
Прелесть в том что это отображается не как видео, а как текст, который можно копипастить.
Для записи нужно поставить тузлу на питоне (есть в некоторых дистрах, например в Gentoo).
Может кому-то понадобится такое.


Пример:
http://asciinema.org/a/ad3lgm6hl8ocqc7h5owpt3486

 ,

Nao
()

Как безопасно разместить много баз 1С:Предприятия на одном сервере?

Дано.

Много организаций (клиентов) с небольшим кол-вом сотрудников (пользователей). Клиентов например 50-100, пользователей 1-3 штуки на клиента. Конфигурация основанная на БП 3.0, платформа 8.3. Один клиент - одна отдельная база.

Нужно.

Максимально дёшево разместить их на одной виртуальной машине.

Что я пытаюсь сделать.

По причине экономии отметается клиент-серверный вариант и 1cfresh. Используем файловый вариант, для каждого клиента создаём по базе и публикуем их через веб-сервер. 1С работает только с веб-сервером Apache 2.0, 2.2 (2.4 не поддерживается). Используем 2.2.

К сожалению такой сетап очень несекьюрен. Если клиент каким-то образом получит возможность выполнять произвольный код в рамках конфигурации, то он спокойно сможет гулять по файловой системе и смотреть/портить чужие базы. В принципе, если не давать административные права в базе, то загрузка всяких внешних обработок ДОЛЖНА быть ограничена. Но зная какое решето БП3.0 и сама платформа, у меня на это надежды нет.

Работа 1С:Предприятия через веб-сервер выглядит вкратце так. В конфиг апача добавляется:

LoadModule _1cws_module "/opt/1C/v8.3/x86_64/wsap22.so"

Alias "/demo" "/var/www/html/demo/"
<Directory "/var/www/html/demo/">
    SetHandler 1c-application
    ManagedApplicationDescriptor "/var/www/html/demo/default.vrd"
</Directory>

В default.vrd прописываются настройки для 1с, в частности расположение каталога с базой, например /srv/1c/demo/

В итоге 1С:Предприятие работает внутри одного процесса httpd, который читает/пишет в каталог с базой /srv/1c/demo/ .

Разделение через apache2-mpm-itk

Пробовал использовать apache2-mpm-itk. Для каждого клиента создал отдельного unix-пользователя и виртуальный хост. Далее с помощью параметра AssignUserID в апаче, назначил каждому виртуальном хосту своего пользователя. Каждому пользователю дал права 700 на директорию со своей базой. В итоге разделение прав получилось сделать, но к великому сожалению платформа стала работать крайне нестабильно. Процессы httpd начали падать с ошибкой «child died with signal 11». От этого варианта пришлось отказаться.

Другие варианты с апачем - mpm-peruser мёртв, остальные mpm не позволяют запускать процессы httpd от разных пользователей, suexec не подходит, т.к. он работает только с cgi.

LXC или OpenVZ

Другой вариант, посадить каждого клиента в свой контейнер, со своей базой и своим апачем. Пока опыта работы с этими технологиями у меня нет, буду курить.
Какой тип контейнеров выбрать?
Какой дистрибутив выбрать в качестве хоста?
В качестве «гостя» нужен дистрибутив с apache 2.2 и с пакетным менеджером умеющим rpm/deb, сейчас использую Ubuntu 12.04 LTS.

Может есть другие варианты решения?

 , ,

Nao
()

Посоветуйте android приложение для удалённого управления

Есть телефон с android и домашний сервак с линуксом которые находятся в одной локалке.

Нужно что бы можно было нажать на телефоне одну кнопку и на серваке выполнилось бы какое-то, заранее заданное действие.
(ну к примеру пусть будет выключение, т.е. команда poweroff)

Протокол взаимодействия может быть каким-угодно, подойдёт хоть SYN пакет на определённые порты или HTTP запрос.

Может уже есть какое приложение под android, которое выводит к примеру виджет с кнопками на рабочий стол и позволяет задать для них какие-то действия типо HTTP GET.

 

Nao
()

Помогите выбрать телефон

Решил отправить на пенсию свой древний Motorola C650 и купить себе что-нибудь по-современнее.

Пока выбор между следующими моделями:
Motorola Milestone, Motorola Milestone 2, Nokia N900 (б/у).

Стоит ли брать старичка N900? Я так понимаю Maemo трупик, а как насчёт MeeGoo? как он в сравнении с Андроидом?
Стоит ли брать б/у N900 за 10 килорублей? На вид вроде выглядит свеже, не потёрто.

Обязательно наличие GPS и какого-нибудь более-менее вменяемого ПО для навигации по этому бренному миру, ибо у меня географический кретинизм.
Руссификация интерфейса и клавы не принципиальна (однако возможность набирать киррилицу хотелось бы иметь).
Хочу взять именно с клавиатуркой. Может посоветуете ещё что-нибудь?

Nao
()

Исчезло сообщение

В теме http://www.linux.org.ru/news/opensource/6421713 было сообщение:

>Я думал в сторону замены торрентов. Если файло тонким слоем размазано по сети, то бороться с пиратством станет крайне затруднительно))

PerfectDark
tommy *** (25.06.2011 10:57:39)

Я нажал на ответить, потом отвлёкся на пару минут, затем написал сообщение и отправил его. Сообщение не появилось и сабжевое сообщение из топика тоже исчезло.

В удалённых его нет.

URL при ответе был такой: http://www.linux.org.ru/add_comment.jsp?topic=6421713&replyto=6423945 Если пройти по этой ссылке то сообщение как бы есть.

Nao
()

Временный номер для получения sms-ки?

На одном сайте надо ввести номер телефона для того чтобы получить «смс с кодом подтверждением».

Вводить свой реальный номер нет желания.

Есть ли какие-нибудь сервисы которые бы мне дали телефонный номер (временный или постоянный) с возожностью форвардинга входящих смс? Сервис желательно халявный.

Нашёл junksms.com - но он похоже не рабочий.
Всякие voip которые предоставляют телефонный номер - непонятно будут ли форвардится смс.
Купить левую симку - впринципе вариант, но хотелось бы послушать другие.

Nao
()

[специалистам по всему][ихтиологам]Что за рыба?

Вот купили рыбку, да забыли название. Не подскажете что это за зверь? Скорее всего что-то банальное.
http://ompldr.org/vNjVwdg/P1020954.JPG

 

Nao
()

[hal] Как добавить опции автомонтирования в Ubuntu?

Ubuntu 10.10
Хочется сделать umask=000 на все подключаемые хотплугом партиции.

После гугления добавил вот такую штуку в /etc/hal/fdi/policy/20-foo.fdi:

<device>
  <match key="block.is_volume" bool="true">
    <match key="@block.storage_device:storage.hotpluggable" bool="true">
      <merge key="volume.policy.mount_option.umask" type="string">000</merge>
    </match>
    <match key="@block.storage_device:storage.removable" bool="true">
      <merge key="volume.policy.mount_option.umask" type="string">000</merge>
    </match>
  </match>
</device>

И судя по lshw они послушно появляются на нужных партициях:

  volume.policy.mount_option.umask = '000'  (string)

Но на самом деле опция не применяется и в выводе mount этих опций нет:

/dev/sdb1 on /media/foo type fuseblk (rw,nosuid,nodev,allow_other,blksize=4096,default_permissions)

Может быть то что я нашёл устарело и сейчас нужно использовать другие ключи или может вообще это настраивается не через hal?

fstab, pmount и прочее не предлагать

 

Nao
()

Бессмысленный спам

В последнее время зачастил всякого рода спам в котором нет ни ссылок ни телефонов, ни вообще чего-то внятного:

Subject: That's me
Date: Mon, 6 Sep 2010 20:52:57 +0300
X-Sender: bounce@m2.newproduct06.in
Errors-To: bounce@m2.newproduct06.in
From: John Smith <JohnSmith635241@yahoo.fr>
Reply-to: John Smith <JohnSmith635241@yahoo.fr>
Message-ID: <898d5be03af1e8548cc8ff8af4ba5b74@m2.newproduct06.in>
X-Priority: 3
X-Mailer: oemPro
X-Mailer-MsgId: bmFvLm5ha2FzaGltYUBnbWFpbC5jb20=
X-Mailer-CSID: NV80
MIME-Version: 1.0
Content-Transfer-Encoding: 8bit
Content-Type: text/plain; charset="UTF-8"

Hi, my name is John Smith and I am happy !

В чём смысл такого спама? Или уже спам ради спама? :)

Nao
()

[фичреквест] А как централизированно управлять избранными топиками?

Собственно сабж. Хотелось бы видеть список этих топиков и возможность оттуда их убирать.

 

Nao
()

Предложение: Раздел для *BSD и iZENа туда посадить

Наверное ни для кого не секрет что товарищь iZEN любит писать бред про Линукс.
Нет, ну ладно человек не знает, но зачем отвечать на технические вопросы если сам в теме нифига не разбираешься? Более того, он совершенно не учится на своих ошибках и нёс, несёт и будет нести такую же пургу всегда.

BSD? Отлично, в этом он хорошо разбирается (объективно оценить сам не могу). Так вот, было бы гораздо больше пользы от человека если бы он сидел там у себя в этом разделе и там помогал/обсуждал/спрашивал и другим не мешал.
Раз уж так сложилось что мы тут и BSD системы обсуждаем.

Предлагаю:

  • Создать раздел BSD.
  • Сделать iZEN`у ридолнли на все технические разделы кроме собственно BSD и Development. (ну может чего-то ещё, но general, admin и install закрыть точно)

Насколько я понимаю что в движке ЛОРа нет такой возможности, но ведь реализовать это не так сложно, да?

Конечно он может писать под анонимусом, но мы же все тут честные люди и постим только под своим аккаунтом :)

Nao
()

[BSD] FreeBSD STABLE-6.2: Обновить или поставить с нуля?

Есть 6.2-STABLE, её уже несколько лет никто не трогал/обновлял. С одной стороны конечно «работает - не трогай», но с другой стороны както ссыкотно то что система стоит без секьюрити апдейтов.
Всё осложняется ещё тем, что имеется в основном удалённый доступ к системе.
На месте конечно есть человек, но он соображает слабо и может действовать только по чётко заданному алгоритму.

Возникает вопрос: какой путь мне лучше выбрать?
1) Обновить систему до 8.0. Насколько я понимаю что обновлять мне придётся в несколько этапов.
Сложность в том, что я навыков работы (и тем более обновления) FreeBSD имею мало, по этому будет довольно трудно исправлять какие-то косяки если удалённого доступа не будет.
2) Забекапить существующее и поставить систему (8.0) с нуля. Думаю смогу объяснять удалённому человеку пошагово что и как делать (паралельно ставя тот же релиз у себя) и довести его до поднятия инета и ssh.
Заодно смогу перевести всё на хвалёный ZFS.
3) Забить и не трогать
4) ??? другие варианты?

Сервер является шлюзом в инет (+сквид), почтовиком, и днс-сервером.

Вариант «Поставить Линукс» просьба не предлагать.

 

Nao
()

Посоветуйте сервис для [техно]блога

Решил тут завести блог. Тематика думаю в основном будет айтишная, ЖЖ (про жизнь, етц) писать нет желания. Язык думаю будет в основном русский (но возможно буду писать и на инглише немного).

Соответственно сабж. Щупал Blogger, wordpress... что ещё посоветуете? Интересует конечно не софт, а именно готовый сервис.

Nao
()

[Qt][нуб] как переопределить paintEvent у виджета

Начал изучать qt и почти в самом начале наткнулся на фигню которую никак не могу понять.

Выбрал qdevelop в качестве IDE. Сделал формочку с помощью qt designer. на формочке - один виджет (Graph).

После сборки у меня сгенерился вот такой код:

class Ui_MainWindow
{
public:
    ...
    QWidget *Graph;
    ...

    void setupUi(QMainWindow *MainWindow)
    {
        ...
        centralwidget = new QWidget(MainWindow);
        ...
        Graph = new QWidget(centralwidget);
        ...
        QMetaObject::connectSlotsByName(MainWindow);
    }
};

namespace Ui {
    class MainWindow: public Ui_MainWindow {};
} // namespace Ui

Этот код сгенерен и менять его я как-бы не могу.

Теперь я хочу переопределить paintEvent() у Graph чтобы что-нибудь там нарисовать.
Но беда в том, что мне получается доступен для изменения только экземпляр класса QWidget, которого зовут *Graph.

Как мне переопределить paintEvent у *Graph?
Переписывать весь setupUi заново? (при любой модификации формы придётся заниматься каждый раз копипастингом)
Или qt designer годится только для того чтобы сделать формочку, взять нагенеренный код и менять его? (думаю всё не так всё же)

 ,

Nao
()

[предложение] smart-questions на форму создания нового топика

В свете тем подобных этой: http://www.linux.org.ru/forum/general/4902395 предлагаю добавить на страницу создания новой темы (add.jsp) ссылку на этот хауту: http://segfault.kiev.ua/smart-questions-ru.html

Конечно вероятность того, что целевая аудитория этого хауту пройдёт по этой ссылке и прочитает его крайне мала, но может всё-таки поможет хотя бы чуть-чуть?..

 

Nao
()

[lorgoogle] А посоветуйте музыку, чтобы со скрипкой

Слушаю тут OST из Kara no Kyoukai и вот понравилась эта композиция: http://omploader.org/vM281dw/16%20M22.ogg

Для Ъ: там скрипка.

Посоветуйте что-нибудь эдакое со скрипкой. Но чтобы не совсем размеренно-грустное, а что-то по-живее. Наличие фортепиано приветствуется, наличие вокала который орёт громче самой музыки не приветствуется.

З.Ы. С линуксом вопрос связан... ну хотя-бы потому что я буду заливать музыку на плеер через комп с Линуксом :)

 

Nao
()

Подключить PS/2 мышь без ребута

Подключил на время PS/2 мышь вместо USB-шной, но перезагружать комп лень. Можно ли как-нибудь заставить систему опознать её? Подозреваю что нет, но вдруг.

udevadm trigger не работает...

Nao
()

RSS подписка на новые темы