Про загрузку проца, вроде ничего не говорил. Посыл больше к этому:
timo-71 #:
$ sudo cat /proc/loadavg 0.08 0.33 0.50 2/1876 53130 #все спокойно $ sudo cat /proc/loadavg #аб тест 15000 запросов на локальный сайт nginx+php-fpm 5.30 1.42 0.78 59/1939 54025
В 1 случае 2 активных процесса, во втором 59.
$ apachectl -V | grep -i mpmServer MPM: prefork
Каждый хтмл, имеет, пусть 30 цсс, джиэс, картинок, шрифтов и т.д. prefork => каждый запрос - процесс. В отличии от нгинкс Пусть 100 одновременных запросов. Спрогнозируйте load average
Сейчас, еще раз пустил. Как то так
А где про это? Вы не поняли суть. Про апач только это
Если апач
То: на каждый запрос - дочерний процесс, с вытекающими... Про 2 других варианта, не скажу, но тоже вроде как нгинкс не обгоняют.
Иными словами, если апач prefork, картинка в top будет похожая,
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 54020 www 20 0 684828 36104 23936 R 26,2 0,2 0:30.67 php-fpm 54259 www 20 0 684828 37000 25152 S 25,8 0,2 0:23.47 php-fpm 54019 www 20 0 684828 36104 23936 R 24,5 0,2 0:28.80 php-fpm
только вместо зрз-азь будут процессы апача.
Еще раз суть эксперимента.
Запустили зрз скрипт из консоли. Код в цитируемом сообщении есть. Прочитать 56мб джисон (46943 шин) и декодировать.
$ php -f /home/www_data/pyh.php #при "все спокойно"phpversion: 8.0.1Time: 221.245ms; Mem: 168391056; PeakMem: 168391408; StrLen:56570903; Count: 46943 Time: 198.521ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943
~ 200 мс
запустили ab -n 15000 -c 100 -H "User-Agent:Mozilla" http://p.php/ Имитируем нагрузку.
И пока оно 15000 запросов делает, пускаем тот же скрипт из консоли
#при "нагрузке"$ php -f /home/www_data/pyh.phpphpversion: 8.0.1Time: 410.268ms; Mem: 168391056; PeakMem: 168391408; StrLen:56570903; Count: 46943 Time: 571.403ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 533.022ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943
Миллисекунд понадобилось более чем в 2 раза.
По моему, весьма наглядно.
Зы: если смущает , http://p.php/ то все просто. локальная зона php обрабатывается. httpd на этой машине дизаблед
server { server_name ~^(.*?)\.?(?<d_name>[^\.]+)\.php$; set $sub_name $1; set $x_root /var/www/php/$d_name/public;.... fastcgi_pass unix:/var/run/php-fpm/www.sock;....
$ sudo systemctl status httpd● httpd.service - The Apache HTTP Server Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled) Drop-In: /usr/lib/systemd/system/httpd.service.d Active: inactive (dead)
Dmitriy_2014 #:почему один и тот же код он может обрабатывать по-разному
Эксперимент:
Загрузка системы на разных этапах
Параллельно, выполнение пхп скрипта из консоли
$ sudo cat /home/www_data/pyh.php <?phpini_set('memory_limit', '256M');function a(){ $t = microtime(1); $f = file_get_contents('/var/www/aweb/pyenv/pyc/data/tyres.json'); $o = json_decode($f, 1); printf("Time: %.3fms; Mem: %s; PeakMem: %s; StrLen:%s; Count: %s \n", (microtime(1) - $t) * 1000, memory_get_usage(), memory_get_peak_usage(), strlen($f), count($o) );}echo 'phpversion: ', phpversion(), "\n";for($i=0;$i<10;$i++) { a();}$ php -f /home/www_data/pyh.php #при "все спокойно"phpversion: 8.0.1Time: 221.245ms; Mem: 168391056; PeakMem: 168391408; StrLen:56570903; Count: 46943 Time: 198.521ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 196.069ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 199.956ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 193.900ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 197.802ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 193.995ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 196.462ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 194.906ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 197.961ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 #при "нагрузке"$ php -f /home/www_data/pyh.phpphpversion: 8.0.1Time: 410.268ms; Mem: 168391056; PeakMem: 168391408; StrLen:56570903; Count: 46943 Time: 571.403ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 533.022ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 478.733ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 374.619ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 420.019ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 578.432ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 413.064ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 371.348ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943 Time: 440.448ms; Mem: 168391056; PeakMem: 168391416; StrLen:56570903; Count: 46943
top при нагрузке
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 54020 www 20 0 684828 36104 23936 R 26,2 0,2 0:30.67 php-fpm 54259 www 20 0 684828 37000 25152 S 25,8 0,2 0:23.47 php-fpm 54019 www 20 0 684828 36104 23936 R 24,5 0,2 0:28.80 php-fpm 54006 www 20 0 684828 36092 23924 R 24,2 0,2 0:28.85 php-fpm 54263 www 20 0 684828 37000 25152 S 24,2 0,2 0:27.60 php-fpm 54007 www 20 0 684828 36092 23924 S 22,5 0,2 0:29.76 php-fpm 54258 www 20 0 684828 36992 25152 S 21,9 0,2 0:24.66 php-fpm 54269 www 20 0 684828 37000 25152 S 21,9 0,2 0:22.90 php-fpm 54256 www 20 0 684828 37000 25152 S 21,5 0,2 0:26.28 php-fpm 54267 www 20 0 684828 37000 25152 S 21,5 0,2 0:21.89 php-fpm 54010 www 20 0 684828 36096 23928 S 21,2 0,2 0:29.62 php-fpm 54265 www 20 0 684828 36996 25152 R 21,2 0,2 0:24.30 php-fpm 54023 www 20 0 684828 35784 23940 S 20,9 0,2 0:30.28 php-fpm 54250 www 20 0 684828 37004 25156 R 20,9 0,2 0:24.51 php-fpm 54264 www 20 0 684828 36996 25152 R 20,9 0,2 0:24.14 php-fpm 54003 www 20 0 684828 36092 23924 S 20,5 0,2 0:30.22 php-fpm 54009 www 20 0 684828 36100 23932 S 20,5 0,2 0:30.98 php-fpm 54253 www 20 0 684828 36996 25152 S 20,2 0,2 0:23.29 php-fpm 54268 www 20 0 684828 36996 25152 S 19,9 0,2 0:25.36 php-fpm 54004 www 20 0 684828 36092 23924 R 19,5 0,2 0:29.96 php-fpm 54005 www 20 0 684828 36088 23924 R 19,2 0,2 0:28.93 php-fpm 54257 www 20 0 684828 37000 25152 R 19,2 0,2 0:22.86 php-fpm 54252 www 20 0 684828 37000 25152 S 18,9 0,2 0:23.08 php-fpm 54016 www 20 0 684828 36100 23936 S 18,5 0,2 0:29.45 php-fpm 54262 www 20 0 684828 36996 25152 S 18,5 0,2 0:24.61 php-fpm 54017 www 20 0 684828 36096 23936 S 18,2 0,2 0:28.83 php-fpm 54018 www 20 0 684828 36104 23936 S 18,2 0,2 0:27.65 php-fpm 54021 www 20 0 684828 35784 23940 S 18,2 0,2 0:28.40 php-fpm 54008 www 20 0 684828 36096 23928 S 17,9 0,2 0:28.27 php-fpm
Наглядно показано, что скрипт из консоли выполняет код в 2 раза медленней при нагрузке. Если апач
Если ресурсов выше крыши, то это незаметно. А если поджимает, то ой.
Нет конечно, более того, даже если условия одинаковы - по разному. Например,
В зависимости от циферок.
load average: 0,22, 0,56, 0,73Tasks: 383 total, 2 running, 380 sleeping, 0 stopped, 1 zombie%Cpu(s): 1,0 us, 0,2 sy, 0,0 ni, 98,6 id, 0,0 wa, 0,1 hi, 0,0 si, 0,0 stMiB Mem : 15689,7 total, 5507,4 free, 4896,2 used, 5286,1 buff/cache
В конечном итоге - может быть и 5мс и 5с
Простой пример
Document Length: 121557 bytesConcurrency Level: 300Time taken for tests: 25.826 secondsComplete requests: 15000Failed requests: 0Total transferred: 1830675000 bytesHTML transferred: 1823355000 bytesRequests per second: 580.81 [#/sec] (mean)Time per request: 516.523 [ms] (mean)Time per request: 1.722 [ms] (mean, across all concurrent requests)Transfer rate: 69223.17 [Kbytes/sec] receivedConnection Times (ms) min mean[+/-sd] median maxConnect: 1 6 32.3 2 249Processing: 3 507 835.8 75 9872Waiting: 3 506 835.8 74 9872Total: 4 513 838.2 77 9874Percentage of the requests served within a certain time (ms) 50% 77 66% 415 75% 789 80% 849 90% 1551 95% 2225 98% 3048 99% 3722 100% 9874 (longest request)
На одной и той же машине, если ее нагрузить запросами к сайту
ab -n 15000 -c 300
(Requests per second: 580.81 [#/sec] (mean)) может быть от 4 миллисекунд до 10 секунд. При этом: load average: 2,07, 1,02, 0,75
Что касается апача - абстрактный пример. Что то занимает при это тесте 2% ЦПУ и 3% памяти. И можно, без этого.
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1630 clickho+ 20 0 14,1g 490912 209656 S 2,0 3,1 6:56.95 clickhouse-serv
Вывод?
======
Добавлю, если спокойно, то на этом железе, так
Чуть, поясню. Напомню, это про cmyk картинку. Вопрос, как из Cyan, Magenta, Yellow сделать Red, Green, Blue
И чтобы более-менее похоже было.
Black это k в cmyk
orig cmyk bit (182, 156, 149, 170)
Онлайн сервисы дают rgb(24, 33, 35), как и линукс без профилей (суть формула выше).
Все стили из таблички визивиг потер (плохой)
<h2>orig cmyk bit (182, 156, 149, 170) <br>cmyk %: (0.71, 0.61, 0.58, 0.67)</h2> <table> <tr> <td style="background:rgb(24, 33, 35);padding:15px;color:#fff;height:100px;width:33%">pil default = rgb(24, 33, 35) </td> <td style="background:rgb(45, 47, 44);padding:15px;color:#fff;height:100px;width:34%">imagic profiles = rgb (45, 47, 44)</td> <td style="background:rgb(49, 48, 44);padding:15px;color:#fff;height:100px;width:33%">irfan = rgb (49, 48, 44) </td> </tr> </table>
Тогда картинкой:
Оригинал картинки, на которой этот эффект проявился хотелось бы увидеть. Если можно, конечно.
Можно в личку, если она тут есть.
Там может просто библиотек соотвествующих нет
Попробуйте
./configure --disable-shared
Таким образом, похоже компилируется без использования шаред библиотек.
Я проверить не смогу, потому что удаляя соотв. либы, удаляются зависимости, а их много...
Если не сработает, все же либы используются из наличия на машине, то еще вариант:
Вот тут, судя по всему либы - https://download.imagemagick.org/ImageMagick/download/delegates/ Которые , тоже можно поставить соответствующим образом, куда то в пользовательский каталог.
Судя по коду скрипта конфигурации ImageMagick, ключом --x_libraries можно указать каталог, куда вы поставили либы
Пока, после конфигурации не увидите
CXXFLAGS = -pthread FEATURES = DPC HDRI Cipher OpenMP DELEGATES = bzlib fontconfig freetype jng jpeg lcms lzma openexr pango png ps rsvg tiff video webp x zlib==============================================================================
Нет смысла продолжать
./configure --prefix=/путь --with-rsvg
Гугл подсказал, это поможет
И, да - помогло
$ /home/www/progs/bin/identify -versionVersion: ImageMagick 7.0.10-59 Q16 x86_64 2021-01-16 https://imagemagick.orgCopyright: © 1999-2021 ImageMagick Studio LLCLicense: https://imagemagick.org/script/license.phpFeatures: Cipher DPC HDRI OpenMP(4.5) Delegates (built-in): bzlib cairo fontconfig freetype jng jpeg lcms lzma openexr pangocairo png tiff webp x zlib
$ /home/www/progs/bin/identify /home/www_data/img/test/test_cmyk.jpg/home/www_data/img/test/test_cmyk.jpg JPEG 1600x948 1600x948+0+0 8-bit CMYK 769432B 0.000u 0:00.000
Как пример, кусок из /usr/lib64/ImageMagick-6.9.10/config-Q16/configure.xml (Установленн глобально)
<configure name="CFLAGS" value="-I/usr/include/libxml2 -I/usr/include/cairo -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/uuid -I/usr/include/librsvg-2.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/gdk-pixbuf-2.0 -pthread -I/usr/include/libpng16 -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/uuid -I/usr/include/libraw -I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/uuid -I/usr/include/harfbuzz -I/usr/include/OpenEXR -pthread -I/usr/include/libdrm -I/usr/include/openjpeg-2.3 -I/usr/include/graphviz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/harfbuzz -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/fribidi -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/uuid -fopenmp -O2 -g -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -fexceptions -fstack-protector-strong -grecord-gcc-switches -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1 -m64 -mtune=generic -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -DIMPNG_SETJMP_IS_THREAD_SAFE -fexceptions -pthread -DMAGICKCORE_HDRI_ENABLE=0 -DMAGICKCORE_QUANTUM_DEPTH=16"/>
Существенно больше чем /home/www/progs/lib/ImageMagick-7.0.10/config-Q16HDRI/configure.xml (установлен локально, текущим юзером)
<configure name="CFLAGS" value="-I/usr/include/libpng16 -I/usr/include/pango-1.0 -I/usr/include/glib-2.0 -I/usr/lib64/glib-2.0/include -I/usr/include/fribidi -I/usr/include/cairo -I/usr/include/pixman-1 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/uuid -I/usr/include/harfbuzz -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/freetype2 -I/usr/include/libpng16 -I/usr/include/uuid -fopenmp -Wall -g -O2 -mtune=core2 -fexceptions -pthread -DMAGICKCORE_HDRI_ENABLE=1 -DMAGICKCORE_QUANTUM_DEPTH=16"/>
пардон, в bin все лежит
$ /path-to-install/bin/convert -version
Вашем случае, вероятно
$ ./bin/convert -version
И правильней, "./" добавлять перед командой, если пускаете из текущего каталога. Чтобы не шарился по /usr/bin, /usr/local/bin и т.д в поисках команды
Или проще, что у вас в --prefix было + bin