Comments 4
Как-то хреново оформлены флаги конфигурации. Разница между конфигурациями незаметна и похоже вы как-то так не заметили, что для AWS-LC дважды выставлены флаги линковки
общие флаги конфигураций
--prefix=/etc/angie
--conf-path=/etc/angie/angie.conf
--error-log-path=/var/log/angie/error.log
--http-log-path=/var/log/angie/access.log
--lock-path=/run/angie.lock
--modules-path=/usr/lib/angie/modules
--pid-path=/run/angie.pid
--sbin-path=/usr/sbin/angie
--http-acme-client-path=/var/lib/angie/acme
--http-client-body-temp-path=/var/cache/angie/client_temp
--http-fastcgi-temp-path=/var/cache/angie/fastcgi_temp
--http-proxy-temp-path=/var/cache/angie/proxy_temp
--http-scgi-temp-path=/var/cache/angie/scgi_temp
--http-uwsgi-temp-path=/var/cache/angie/uwsgi_temp
--user=angie
--group=angie
--with-file-aio
--with-http_acme_module
--with-http_addition_module
--with-http_auth_request_module
--with-http_dav_module
--with-http_flv_module
--with-http_gunzip_module
--with-http_gzip_static_module
--with-http_mp4_module
--with-http_random_index_module
--with-http_realip_module
--with-http_secure_link_module
--with-http_slice_module
--with-http_ssl_module
--with-http_stub_status_module
--with-http_sub_module
--with-http_v2_module
--with-http_v3_module
--with-mail
--with-mail_ssl_module
--with-stream
--with-stream_acme_module
--with-stream_mqtt_preread_module
--with-stream_rdp_preread_module
--with-stream_realip_module
--with-stream_ssl_module
--with-stream_ssl_preread_module
--with-threads
--feature-cache=../angie-feature-cacheдефолтная сборка из пакета к общим флагам докидывает параметры линковки
--with-ld-opt=
-Wl,-Bsymbolic-functions
-Wl,--package-metadata=%7B%22type%22:%22deb%22%2C%22os%22:%22ubuntu%22%2C%22name%22:%22angie%22%2C%22version%22:%221.11.8-1~resolute%22%2C%22architecture%22:%22amd64%22%7D
-flto=auto
-ffat-lto-objects
-Wl,-z,relro
-Wl,-z,nowopenssl немного подчищает флаги линковки от метаданных
--with-ld-opt=
-Wl,-Bsymbolic-functions
-flto=auto
-ffat-lto-objects
-Wl,-z,relro
-Wl,-z,nowи добавляет дополнительный флаг видимо ссылаясь на dev-пакет или исходники
--with-openssl=/root/openssl-4.0.1Для AWS прокинуты как флаги линковки так и флаги компилятора
--with-cc-opt=
-fPIC
-DNGX_DEBUG_PALLOC
-DNGX_DEBUG_MALLOC
-I/root/aws-lc-5.0.0/includeучитывая флаги отладочных аллокаторов есть вопросики к чистоте эксперимента
а потом подряд сначала накатываются ld флаги от openssl
--with-ld-opt=
-Wl,-Bsymbolic-functions
-flto=auto
-ffat-lto-objects
-Wl,-z,relro
-Wl,-z,nowкоторые похоже перетираются собственными опциями
--with-ld-opt=
-Wl,-z,relro
-Wl,-z,now
-Wl,-rpath -L /root/aws-lc-5.0.0/build/ssl
-L/root/aws-lc-5.0.0/build/crypto
-lssl
-lcrypto
-lstdc++есть смутное сомнение, что оно не линкуется с чем вы пытались его линковать и rpath должен выглядеть как-то так
-Wl,-rpath,/root/aws-lc-5.0.0/build/ssl:/root/aws-lc-5.0.0/build/crypto
-L/root/aws-lc-5.0.0/build/ssl
-L/root/aws-lc-5.0.0/build/crypto либо он там вообще нинужон. Как результат есть шанс, что оно подцепило системные ssl и crypto. Ну и удалёние -Wl,-Bsymbolic-functions вероятно тоже могло внести некоторые коррективы в производительность, также как и прочие LTO оптимизации, которые не были добавлены в новый сетап и линковка с stdc++ (aws на с++?), что опять же добавляет вопросов к чистоте эксперимента.
Поправьте меня конечно, если я где-то был неправ.
Первый ld-opt действительно был лишний в случае, поправил AWS-LC. Но сомнений, что линковка была верной нет, это подтверждает вывод ldd и angie -V. По поводу отладочных символов нужно отдельно проверять.
-DNGX_DEBUG_PALLOC
-DNGX_DEBUG_MALLOCЭто режим дебага аллокаций при котором может существенно страдать производительность. Если это и правда попало в сборку, то это могло повлиять на результаты.
Влияние TLS-библиотек и настроек на производительность