LINUX.ORG.RU

Сообщения OxFF

 

«Правильные» коннекты к Redis из python

Форум — Development

Пытаюсь писать много данных в redis из python. Отправляю например 10к сообщений в секунду. Проблема в том что первые 2-3к залетают норм, а потом начинает сыпать такую ошибку

redis.exceptions.ConnectionError: Error 10048 connecting to 192.168.1.201:6379. Only one usage of each socket address (protocol/network address/port) is normally permitted.

При этом периодически все равно до 1к пролазит раз в несколько секунд.

делаю так

r = redis.StrictRedis(host=host, port=port, db=db)
r.lpush(redis_key, data)
r.close()

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

 ,

OxFF
()

Запретить кеширование файлов

Форум — Admin

Есть сервер с proxmox и 192гб памяти, если вся память не забита виртуалками он начинает кешировать диски виртуальных машин в память. Даже сейчас когда я потушил все виртуалки и копирую диск одной из них на 100гб он загнал его в память. (или нет, но именно 100гб памяти занято при том что все потушено). echo «echo 3 > /proc/sys/vm/drop_caches» помогает но работает непозволительно медленно, запускать его каждый раз когда нужно запустить виртуалку и ждать пол дня пока оно отработает не очень продакшн вариант. Может можно как то запретить это?

PS На ноде стоит ZFS, может быть в этом дело? на второй такой же ноде, но без ZFS на рейде, пока такого поведения не замечал.

 , , ,

OxFF
()

«Дефотный» виртуал хост апач

Форум — Admin

Вообщем проблема такая, определено несколько виртуалхостов, допустим 2 один на https а второй нет, к примеру https://host1.example.com и http://host2.example.com

Как сделать что бы при запросе https://host2.example.com не открывался https://host1.example.com

 ,

OxFF
()

Raspberry не видит USB модем если он подключен через USB хаб

Форум — Linux-hardware

Если подключаю usb модем напрямую то все ОК, он появляется в /dev/ttyUSB[1-3] Если же я подключаю модем через USB хаб (без разницы с питанием или без), то в /dev/ ничего не появляется. Кстати если подключаю пустой usb хаб то udevadm monitor начинает бесконечно сыпать такую простыню

KERNEL[5799.832747] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4 (usb)
KERNEL[5799.847659] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0 (usb)
UDEV  [5799.864962] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4 (usb)
UDEV  [5799.873774] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0 (usb)
KERNEL[5800.257439] remove   /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0 (usb)
UDEV  [5800.260393] remove   /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0 (usb)
KERNEL[5800.263434] remove   /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4 (usb)
UDEV  [5800.268202] remove   /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4 (usb)
KERNEL[5800.602327] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4 (usb)
KERNEL[5800.610279] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0 (usb)
UDEV  [5800.625933] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4 (usb)
UDEV  [5800.636116] add      /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0 (usb)
KERNEL[5801.025077] remove   /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0 (usb)
UDEV  [5801.028852] remove   /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4/1-1.4:1.0 (usb)
KERNEL[5801.032623] remove   /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4 (usb)
UDEV  [5801.037350] remove   /devices/platform/soc/20980000.usb/usb1/1-1/1-1.4 (usb)

Вот к примеру вывод подключения напрямую usb модема когда все ок:

KERNEL[61.942750] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2 (usb)
KERNEL[61.950687] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.0 (usb)
KERNEL[61.965278] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.1 (usb)
KERNEL[61.972487] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.2 (usb)
UDEV [61.996828] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2 (usb)
KERNEL[62.067937] add /module/usbserial (module)
KERNEL[62.073960] add /bus/usb-serial (bus)
KERNEL[62.077708] add /bus/usb/drivers/usbserial (drivers)
KERNEL[62.079523] add /bus/usb/drivers/usbserial_generic (drivers)
KERNEL[62.082721] add /bus/usb-serial/drivers/generic (drivers)
KERNEL[62.088991] add /module/usb_wwan (module)
UDEV [62.098809] add /module/usbserial (module)
UDEV [62.105013] add /bus/usb-serial (bus)
UDEV [62.127512] add /bus/usb/drivers/usbserial (drivers)
UDEV [62.145178] add /module/usb_wwan (module)
KERNEL[62.146742] add /module/option (module)
KERNEL[62.149016] add /bus/usb/drivers/option (drivers)
UDEV [62.153068] add /bus/usb-serial/drivers/generic (drivers)
KERNEL[62.154613] add /bus/usb-serial/drivers/option1 (drivers)
KERNEL[62.157175] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0 (usb-serial)
UDEV [62.164751] add /module/option (module)
UDEV [62.173090] add /bus/usb/drivers/option (drivers)
KERNEL[62.174509] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0/tty/ttyUSB0 (tty)
KERNEL[62.176210] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.1/ttyUSB1 (usb-serial)
UDEV [62.177667] add /bus/usb/drivers/usbserial_generic (drivers)
UDEV [62.186831] add /bus/usb-serial/drivers/option1 (drivers)
KERNEL[62.188372] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.1/ttyUSB1/tty/ttyUSB1 (tty)
KERNEL[62.193893] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.2/ttyUSB2 (usb-serial)
KERNEL[62.197480] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.2/ttyUSB2/tty/ttyUSB2 (tty)
UDEV [62.199787] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.2 (usb)
UDEV [62.207643] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.1 (usb)
UDEV [62.215643] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.1/ttyUSB1 (usb-serial)
UDEV [62.221033] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.2/ttyUSB2 (usb-serial)
UDEV [62.289980] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.2/ttyUSB2/tty/ttyUSB2 (tty)
UDEV [62.304553] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.1/ttyUSB1/tty/ttyUSB1 (tty)
UDEV [63.269352] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.0 (usb)
UDEV [63.276761] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0 (usb-serial)
UDEV [63.313154] add /devices/platform/soc/20980000.usb/usb1/1-1/1-1.2/1-1.2:1.0/ttyUSB0/tty/ttyUSB0 (tty)

 , , ,

OxFF
()

Управление хедерами Django

Форум — Development

Вообщем то можно ли как то при сервинге файлов через джанговский MEDIA_URL задать хедер? Файл врапер и тд не вариант, мне нужно возвращать прямую ссылку на файл а не отдавать HttpResponse. Проблема в том что хром tar.gz скачивает как tar и я хочу задать файлам Content-Disposition что бы они качались нормально.

 

OxFF
()

Создание xml элемента в Python

Форум — Development

Привет,

Генерирую xml используя lxml нужно мне например сделать <name>text</name> делаю сейчас так:

name = etree.Element('name')
name.text = 'text'
Хотя кажется что должно же быть что то красивее, по типу:
name = etree.Element('name', text='text')
Доку вроде читал, но ничего не увидел. Может кто чего посоветует?

 , ,

OxFF
()

Хром качает tar.gz как tar

Форум — General

Проблема, качаю например архив tar.gz размером 10мб, а скачивается 100мб. На самом деле скачаный архив представляет собой уже не tar.gz а tar архив, но имя файла при этом остается tar.gz. При этом нет прогресса скачивания. По началу грешил на свою панельку с бекапами, но потом заметил что хром ведет себя так же и на других сайтах, например скриншот. Причем что интересно, с одних зеркал качает нормально, а с других с багом. На скриншоте один и тот же архив скачаный с разных зеркал php. Только один уже tar а второй как и должен быть tar.gz. Тестил на сафари, там такого нет. Сталкивался ли кто нибудь с подобным?

 

OxFF
()

Парсинг stdout в Python

Форум — Development

Хочу спарсить вывод такой команды

pv -n dump.sql | mysql -uroot -ppass -h127.0.0.1 dbname
Нужно это для того что бы иметь прогресс импорта в процентах. Гугл выдает парсинги с помощью subprocess.Popen с простыми командами типа «ls -la». Пробовал и так
pv_cmd = subprocess.Popen(['pv', '-n', 'dump.sql'], shell=True, stdout=subprocess.PIPE)
mysql_cmd = subprocess.Popen(['mysql', '-uroot', '-ppass', '-h127.0.0.1', 'dbname'], shell=True, stdin.pv_cmd.stdout, stdout=subprocess.PIPE)
Ругается «SyntaxError: non-keyword arg after keyword arg».

 ,

OxFF
()

Распаковка архивов в python 2.7 с non unicode путями

Форум — Development

Прошу совета, вообщем то есть tarfile, он отлично все распаковывает кроме тех моментов когда есть не юникод в архиве. Как я понял выходом является использование третьего питона, но может кто знает как побороть это во второй ветке. Или может подскажете какую другую либу которой я смогу нонюникод паковать/распаковать что бы при этом иметь возможность считать прогресс. Пока для получения прогресса пытаюсь использовать конструкцию как пишут в интернетах, но она не работает. Распаковка идет, прогресс идет только в аутпут на экране, в редис соответственно ничего не долетает:

        if self.archive_type() == 'tar.gz':
            cmd_string = "pv -n "+self.archive_file+" | tar xp -C "+self.target_directory
            cmd = subprocess.Popen(cmd_string, shell=True, stdout=subprocess.PIPE)
            while True:
                line = cmd.stdout.readline()
                if line != '':
                    self.redis_obj.publish('unpack', line.rstrip())
                else:
                    break

Так что нужно либо заставить постить прогресс то что есть, либо как то заставить tarfile работать с нонюникод, либо есть какая другая либа о которой я не знаю, и которая умеет и то и другое. Спасибо.

 , ,

OxFF
()

Безопасность гипервизора

Форум — Admin

Читаю эту доку.

Keeping in mind that any user with administrative security privileges for guest virtual machines can potentially change the partitions in the host physical machine, it is imperative that only actual system administrators are granted this level of security.

Чего то я не допонял, каким боком админ из виртуалки может повлиять на хост гипервизора. Может я не правильно истолковал это?

 

OxFF
()

Проблемы с QEMU-KVM

Форум — Admin

Крутится один гипервизор под этим делом на 6 дебиане, все нормально. Сегодня поставил еще один, при запуске виртуалки одно ядро висит на 100% виртуалка при этом дико тормозит, то есть если например хожу по установщику дебиана, то во время ожидания действия загрузка 0, а когда установщик что то делает проц гипервизора 100% и установщик работает медленно, хотя этот второй гипервизор даже мощнее первого + ssd диски, думал все будет летать (

Куда копать, в чем может быть беда?

 , , , ,

OxFF
()

urllib2 максимальное число открытых запросов

Форум — Development

Подскажите сколько теоретически/практически может существовать открытых запросов типа

urllib2.urlopen(address).getcode()

при условии что каждый запрос запускается в отдельном потоке

thread.start_new_thread()

Есть идея мониторить доступность очень большого числа хостов. Может есть более быстрые/правильные методы?

 ,

OxFF
()

«Правильная» двухсторонняя синхронизация файлов HA проекта

Форум — Admin

Добрый день,

Есть желание сделать одну систему (php+mysql) отказоустойчивой, как я это вижу:

Покупаются сервера в разных датацентрах, есть 2 веб-сервера, 2 HA прокси, 3 DNS сервера. DNS проверяет доступность каждого из HA прокси, и решает адрес вегда в айпи одного из доступных, HA прокси в свою очередь проверяет доступность веб-серверов, и возвращает всегда какой то один, а второй висит как резервный. Как только падает первый, HA прокси это фиксирует и направляет трафик на второй, когда поднимается первый, HA через определенное время начинает слать трафик на него (задержка в моем понимании нужна что бы успела произойти синхронизация данных от второго сервера на первый). Базы будут master - master, проблем быть не должно потому что писаться всегда будет только в одну БД. А вот как быть с файлами? rsync? Но тогда как он поймет что отсутствие файла 1 на сервере 2 = скопировать файл 1 с первого сервера на второй, а не удалить его на первом?

Замечания и критика приветствуются, никогда раньше такого не воротил. Кстати по поводу «DNS проверяет доступность каждого из HA прокси, и решает адрес вегда в айпи одного из доступных», это реально или я себе придумал? Если да то тыкните куда копать, bind это умеет?

 , , ,

OxFF
()

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