Форум русскоязычного сообщества Ubuntu


Автор Тема: Тест multiprocessing  (Прочитано 422 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Veliks

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Тест multiprocessing
« : 17 Ноябрь 2016, 13:36:32 »
Привет всем! Помогите разобраться с работой многопоточного скрипта на python.
В инете уже нашел как разблокировать количество tcp соединений, но похоже оно не работает как надо. Когда запускаю скрипт увеличивая количество потоков, это приводит к увеличению занимаемой памяти, но количество соединений, скорость работы увеличивается не значительно. Это при количестве потоков больше 300 примерно.
Запускал скрипт после команды sudo -i потом так ./
А когда решил попробовать войти в систему под рутом, совсем перестало запускаться:
root@virtu-virtual-machine:~# ./patator.py rdp_login host=COMBO10 user=COMBO11 password=FILE0 1=combos.txt 0=word11.txt -x ignore:code=-11 -x ignore:code=-15 -x ignore:code=1,fgrep='ation or connection fail' --threads=350 --max-retries=1 -l /root/log
Directory '/root/log' is not empty, do you want to wipe it ? [Y/n]: Y
08:49:32 patator    INFO - Starting Patator v0.7-beta (https://github.com/lanjelot/patator) at 2016-11-17 08:49 GMT
ERROR:root:[Errno 24] Too many open files
Traceback (most recent call last):
  File "./patator.py", line 1547, in fire
    self.start_threads()
  File "./patator.py", line 1612, in start_threads
    report_queue = multiprocessing.Queue(maxsize=1000)
  File "/usr/lib/python2.7/multiprocessing/__init__.py", line 218, in Queue
    return Queue(maxsize)
  File "/usr/lib/python2.7/multiprocessing/queues.py", line 62, in __init__
    self._reader, self._writer = Pipe(duplex=False)
  File "/usr/lib/python2.7/multiprocessing/__init__.py", line 107, in Pipe
    return Pipe(duplex)
  File "/usr/lib/python2.7/multiprocessing/connection.py", line 196, in Pipe
    fd1, fd2 = os.pipe()
OSError: [Errno 24] Too many open files
08:49:39 patator    INFO - Hits/Done/Skip/Fail/Size: 0/0/0/0/1, Avg: 0 r/s, Time: 410936h 49m 39s
08:49:39 patator    INFO - To resume execution, pass --resume 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
root@virtu-virtual-machine:~#

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

(Ubuntu 14.04 Backbox; xfce)


Оффлайн Sly_tom_cat

  • Don't worry, be happy!
  • Заслуженный пользователь
  • Старожил
  • *
  • Сообщений: 11895
  • Xubuntu 18.04 (64bit)
    • Просмотр профиля
Re: Тест multiprocessing
« Ответ #1 : 17 Ноябрь 2016, 13:59:46 »
Veliks, во первых опишите, что делает скрипт, а лучше покажите его. Во вторых расскажите что вы там и как разблокировали. а то вы какие-то TCP соединения зачем-то разблокируете :idiot2:, а у вас на количество открытых файлов ругается... :-\ :idiot2:

А то сейчас ваше сообщение выглядит как "я тут что-то делаю а оно как-то не работает". На такое можно ответить только - "как-то почините"...

PS под рутом в систему заходить вообще не надо - он должен быть заблокирован и лучше это не менять. Для всех административных целей достаточно sudo.

Пользователь добавил сообщение 17 Ноябрь 2016, 14:07:44:
Когда запускаю скрипт увеличивая количество потоков, это приводит к увеличению занимаемой памяти, но количество соединений, скорость работы увеличивается не значительно. Это при количестве потоков больше 300 примерно.
И это - нормально. просто где-то в вашей задаче наступает "насыщение": один из потребляемых ресурсов просто полностью потребляется. И если речь о внешнем соединении то там скорее всего "насыщение" возникает за пределами вашего компьютера и как бы вы не наращивали число потоков/соединений - быстрее уже ничего не будет. 
« Последнее редактирование: 17 Ноябрь 2016, 14:08:48 от Sly_tom_cat »
Индикатор для Yandex-Disk: https://forum.ubuntu.ru/index.php?topic=241992
UEFI-Boot - грузимся без загрузчика: http://help.ubuntu.ru/wiki/uefiboot

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3096
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Re: Тест multiprocessing
« Ответ #2 : 17 Ноябрь 2016, 14:16:36 »
Veliks, вот связь только непонятная, "поднял лимит tcp" (то есть открытых сокетов). А лимит одновременно открытых файлов поднимать будет пушкин с лермонтовым. И когда уже пользователи начнут читать то, что им пишет система.


P.S. И настраивать вам программудля брутфорса мы не будем
Fujitsu UH552: Intel Core i3-3217U, 16GB DDR3 1600MHz, Intel HD4000, Intel 535 120GB/Ubuntu 16.04 Mate
HP 625: AMD Athlon P320, 4GB DDR3 1333MHz, AMD HD4250, Seagate Momentus/Ubuntu 14.04 Mate

Оффлайн Veliks

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Тест multiprocessing
« Ответ #3 : 17 Ноябрь 2016, 14:52:10 »
Почему тогда команда unlimit -n выдает не под рутом 100000 как я и выставил, а под рутом 1024.

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3096
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Re: Тест multiprocessing
« Ответ #4 : 17 Ноябрь 2016, 15:01:15 »
Veliks, а потому, что вы не читали, что делает ulimit (а не unlimit)
Цитировать
get and set user limits
То есть для каждого пользователя лимиты свои, которые можно выставитьи глобально в /etc/security/limits.conf
Fujitsu UH552: Intel Core i3-3217U, 16GB DDR3 1600MHz, Intel HD4000, Intel 535 120GB/Ubuntu 16.04 Mate
HP 625: AMD Athlon P320, 4GB DDR3 1333MHz, AMD HD4250, Seagate Momentus/Ubuntu 14.04 Mate

Оффлайн Veliks

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Тест multiprocessing
« Ответ #5 : 17 Ноябрь 2016, 15:27:06 »
Например так у меня прописано но не работает. И это не только у меня.
* soft nofile 100000
* hard nofile 100000

Возможно в этом файле колонки надо соблюдать ?
# /etc/security/limits.conf
#
#Each line describes a limit for a user in the form:
#
#<domain>        <type>  <item>  <value>
#
#Where:
#<domain> can be:
#        - a user name
#        - a group name, with @group syntax
#        - the wildcard *, for default entry
#        - the wildcard %, can be also used with %group syntax,
#                 for maxlogin limit
#        - NOTE: group and wildcard limits are not applied to root.
#          To apply a limit to the root user, <domain> must be
#          the literal username root.
#
#<type> can have the two values:
#        - "soft" for enforcing the soft limits
#        - "hard" for enforcing hard limits
#
#<item> can be one of the following:
#        - core - limits the core file size (KB)
#        - data - max data size (KB)
#        - fsize - maximum filesize (KB)
#        - memlock - max locked-in-memory address space (KB)
#        - nofile - max number of open files
#        - rss - max resident set size (KB)
#        - stack - max stack size (KB)
#        - cpu - max CPU time (MIN)
#        - nproc - max number of processes
#        - as - address space limit (KB)
#        - maxlogins - max number of logins for this user
#        - maxsyslogins - max number of logins on the system
#        - priority - the priority to run user process with
#        - locks - max number of file locks the user can hold
#        - sigpending - max number of pending signals
#        - msgqueue - max memory used by POSIX message queues (bytes)
#        - nice - max nice priority allowed to raise to values: [-20, 19]
#        - rtprio - max realtime priority
#        - chroot - change root to directory (Debian-specific)
#
#<domain>      <type>  <item>         <value>
#

#*               soft    core            0
#root            hard    core            100000
#*               hard    rss             10000
#@student        hard    nproc           20
#@faculty        soft    nproc           20
#@faculty        hard    nproc           50
#ftp             hard    nproc           0
#ftp             -       chroot          /ftp
#@student        -       maxlogins       4

* soft nofile 100000
* hard nofile 100000


# End of file

Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3096
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Re: Тест multiprocessing
« Ответ #6 : 17 Ноябрь 2016, 15:46:30 »
Во-первых,
Код: Bash
  1. cat /proc/sys/fs/file-max
  2.  
Должно быть не меньше 100000
Если меньше,
Код: Bash
  1. echo "fs.file-max=100000" | sudo tee -a /etc/sysctl.conf
  2.  
Во-вторых, еще надо nproc увеличить (количество открытых файлов на процесс)
(Нажмите, чтобы показать/скрыть)
В третьих, указать, что смотреть файл лимитс)
Код: Bash
  1. echo "session required pam_limits.so" | sudo tee -a /etc/pam.d/common-session
  2.  
Fujitsu UH552: Intel Core i3-3217U, 16GB DDR3 1600MHz, Intel HD4000, Intel 535 120GB/Ubuntu 16.04 Mate
HP 625: AMD Athlon P320, 4GB DDR3 1333MHz, AMD HD4250, Seagate Momentus/Ubuntu 14.04 Mate

Оффлайн Veliks

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Тест multiprocessing
« Ответ #7 : 17 Ноябрь 2016, 16:09:57 »
Цитировать
Во-первых,
Код: Bash
cat /proc/sys/fs/file-max
 
Должно быть не меньше 100000
Уже есть 100000

Цитировать
В третьих, указать, что смотреть файл лимитс)
Код: Bash
echo "session required pam_limits.so" | sudo tee -a /etc/pam.d/common-session

Уже сделано.


Цитировать
Во-вторых, еще надо nproc увеличить (количество открытых файлов на процесс)
 (Нажмите, чтобы показать/скрыть)

Заменил те две строчки на эти четыре, перезагрузился, но по прежнему ulimits -d = 1024


Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3096
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Re: Тест multiprocessing
« Ответ #8 : 17 Ноябрь 2016, 16:34:40 »
показывайте
Код: Bash
  1. ulimit -a
  2.  
Fujitsu UH552: Intel Core i3-3217U, 16GB DDR3 1600MHz, Intel HD4000, Intel 535 120GB/Ubuntu 16.04 Mate
HP 625: AMD Athlon P320, 4GB DDR3 1333MHz, AMD HD4250, Seagate Momentus/Ubuntu 14.04 Mate

Оффлайн Veliks

  • Автор темы
  • Новичок
  • *
  • Сообщений: 5
    • Просмотр профиля
Re: Тест multiprocessing
« Ответ #9 : 17 Ноябрь 2016, 17:57:52 »

root@virtu-virtual-machine:~# ulimit -a
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 72101
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 8192
cpu time               (seconds, -t) unlimited
max user processes              (-u) 72101
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited
root@virtu-virtual-machine:~#


Оффлайн EvangelionDeath

  • Администратор
  • Старожил
  • *
  • Сообщений: 3096
  • Ubuntu Mate 16.04 х64
    • Просмотр профиля
Re: Тест multiprocessing
« Ответ #10 : 17 Ноябрь 2016, 18:52:51 »
Добавьте еще для рута
(Нажмите, чтобы показать/скрыть)
Fujitsu UH552: Intel Core i3-3217U, 16GB DDR3 1600MHz, Intel HD4000, Intel 535 120GB/Ubuntu 16.04 Mate
HP 625: AMD Athlon P320, 4GB DDR3 1333MHz, AMD HD4250, Seagate Momentus/Ubuntu 14.04 Mate

 

Страница сгенерирована за 0.079 секунд. Запросов: 24.