LINUX.ORG.RU
ФорумAdmin

Apache 2.4 и ssl

 ,


0

1

Привет! Всем, появилась небольшая проблема. Имеется виртуалхост на апаче 2.4 под ssl. При обращении к нему с постоянной периодичностью идет подтормаживание, если это chrome то в строке состояния пишет «Создание безопасного подключения, через 1-3 секунды все быстро загружается. С чем это связано? И как можно исправить?

SSLPassPhraseDialog exec:/etc/apache2/ssl/sslpass.pl

<IfModule mod_ssl.c>
        <VirtualHost *:443>

        ServerName **********
        ServerAlias ************
        ServerAdmin **************
        DocumentRoot /usr/local/nodeny/htdocs/

        SSLEngine on
        SSLProtocol all -SSLv2
        SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM
        SSLCertificateFile /etc/apache2/ssl/2_*******.crt
        SSLCertificateKeyFile /etc/apache2/ssl/******.key
        SSLCertificateChainFile /etc/apache2/ssl/1_root_bundle.crt

        <FilesMatch "\.(cgi|shtml|phtml|php)$">
                SSLOptions +StdEnvVars
        </FilesMatch>

        BrowserMatch "MSIE [2-6]" \
                nokeepalive ssl-unclean-shutdown \
                downgrade-1.0 force-response-1.0
        BrowserMatch "MSIE [17-9]" ssl-unclean-shutdown

        RewriteEngine On
        RewriteRule ^/$ /cgi-bin/stat.pl [R]

        <Directory /usr/local/nodeny/htdocs/>
                Options -Indexes +FollowSymLinks +MultiViews
                AllowOverride All
                Require all granted
        </Directory>

        ScriptAlias /cgi-bin/ /usr/local/nodeny/cgi-bin/
                <Directory "/usr/local/nodeny/cgi-bin/">
                        AllowOverride None
                        Options -Indexes +ExecCGI -MultiViews +SymLinksIfOwnerMatch
                        Require all granted
                        SSLOptions +StdEnvVars
                </Directory>

        ErrorLog ${APACHE_LOG_DIR}/nodeny/error.log
        CustomLog ${APACHE_LOG_DIR}/nodeny/access.log combined

        </VirtualHost>
</IfModule>


Стандартный ответ на медленный ssl это посмотреть что в /proc/sys/kernel/random/entropy_avail и, если там около нуля, прочитать про параметр SSLRandomSeed.

mky ★★★★★ ()
Ответ на: комментарий от mky

Вроде не около нуля. SSLRandomSeed в конфиге нет, но смысла я так понял его оставить тоже нет?

~# cat /proc/sys/kernel/random/entropy_avail
865

А KeepAlive не может давать такой эффект?

fet4 ()
Ответ на: комментарий от fet4

Да, не ноль. Относительно SSLRandomSeed сказать сложно, в 2.2 я ставил его на /dev/urandom, так как в документации не сказано, какое у него значение по умолчанию.

KeepAlive ИМХО, не должен давать такой эффект. Эта проблема в разных браузерах, или только в хроме? Посмотрите tcpdump'ом DNS запросы от браузера, может он пытается найти PTR-запись.

mky ★★★★★ ()
Ответ на: комментарий от mky

В разных браузерах так же есть подвисания. А нехватка памяти на сервере не может такое давать?

Так же редактировал /etc/apache2/mods-available/mpm_prefork.conf

<IfModule mpm_prefork_module>
        StartServers                     5
        MinSpareServers           5
        MaxSpareServers          10
        ServerLimit               1000
        MaxRequestWorkers         1000
        MaxConnectionsPerChild   0
</IfModule>
Так были подвисания но не из-за ssl, а не хватке соединений.

Вот мой /etc/apache2/mods-enabled/ssl.conf

<IfModule mod_ssl.c>
        SSLRandomSeed startup builtin
        SSLRandomSeed startup file:/dev/urandom 512
        SSLRandomSeed connect builtin
        SSLRandomSeed connect file:/dev/urandom 512
        AddType application/x-x509-ca-cert .crt
        AddType application/x-pkcs7-crl .crl
        SSLPassPhraseDialog  exec:/usr/share/apache2/ask-for-passphrase
        SSLSessionCache         shmcb:${APACHE_RUN_DIR}/ssl_scache(512000)
        SSLSessionCacheTimeout  300
        SSLCipherSuite HIGH:!aNULL
        SSLProtocol all -SSLv3
</IfModule>
fet4 ()
Ответ на: комментарий от fet4

Нехватка какой памяти? Вобще всей, что OOM Killer приходит, или ОЗУ с интенсивным свопингом?

Мне почему-то сначала казалось, что речь про какой-то локальный сервер, а у вас там что-то нагруженное, раз понадобилось ″MaxRequestWorkers 1000″. Через mod_status какое состояние httpd-процессов? Что LoadAverage системы и дисковой активностью?

mky ★★★★★ ()
Ответ на: комментарий от mky

Ну как сказать нагруженное это биллинг обслуживает около 400 человек, MaxRequestWorkers пришлось увеличить с 250 до 1000 так как тоже были тормоза с открыванием страницы биллинга, особенно первого числа месяца, когда все интенсивно пользуются.
Стоит 2Гб ОЗУ и свопа набегает под гиг. В момент нагрузки, памяти остается под 100 МБ load average: 0,87, 0,85, 0,85. iotop показывает что в основном использует диск mysqld io в среднем 20%.

Apache Server Status for 172.30.0.1 (via 172.30.0.1)

Server Version: Apache/2.4.10 (Debian) OpenSSL/1.0.1k
Server MPM: prefork
Server Built: Aug 28 2015 16:28:08
Current Time: Sunday, 06-Mar-2016 14:05:27 EET
Restart Time: Sunday, 06-Mar-2016 14:00:31 EET
Parent Server Config. Generation: 1
Parent Server MPM Generation: 0
Server uptime: 4 minutes 55 seconds
Server load: 1.18 0.95 0.97
Total accesses: 59 - Total Traffic: 310 kB
CPU Usage: u.24 s.03 cu.09 cs0 - .122% CPU load
.2 requests/sec - 1076 B/second - 5.3 kB/request
3 requests currently being processed, 9 idle workers
_WW.____._W.___.................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
................................................................
........................................
Scoreboard Key:
"_" Waiting for Connection, "S" Starting up, "R" Reading Request,
"W" Sending Reply, "K" Keepalive (read), "D" DNS Lookup,
"C" Closing connection, "L" Logging, "G" Gracefully finishing,
"I" Idle cleanup of worker, "." Open slot with no current process
Srv	PID	Acc	M	CPU	SS	Req	Conn	Child	Slot	Client	VHost	Request
0-0	9507	0/1/3	_	0.00	24	0	0.0	0.00	0.00	10.193.0.126	denied.fibernet.dp.ua:80	GET /?&ts=1457265893575&s=ba420aad938853672f2366736fb4034fabc8b
1-0	8919	0/0/0	W	0.00	295	0	0.0	0.00	0.00	10.193.0.146	****:80	GET / HTTP/1.1
2-0	8920	0/4/4	W	0.13	0	0	0.0	0.01	0.01	10.193.1.184	denied.****.dp.ua:80	GET /server-status HTTP/1.1
3-0	-	0/0/2	.	0.00	184	0	0.0	0.00	0.00	127.0.0.1	srv-bill.****.dp.ua:8081	OPTIONS * HTTP/1.0
4-0	8922	0/5/5	_	0.00	24	0	0.0	0.01	0.01	10.193.0.126	srv-bill.****.dp.ua:8080	POST /rest/publisher/v2/svc/?&ts=1457265893575&s=ba420aad938853
5-0	8927	0/7/7	_	0.14	186	69	0.0	0.11	0.11	10.193.1.184	****.dp.ua:443	NULL
6-0	8928	0/9/9	_	0.00	152	0	0.0	0.03	0.03	10.193.0.124	srv-bill.****.dp.ua:8080	NULL
7-0	8929	0/4/4	_	0.00	58	0	0.0	0.00	0.00	10.193.0.146	srv-bill.****.dp.ua:8080	\x16\x03\x01
8-0	-	0/0/1	.	0.00	273	0	0.0	0.00	0.00	127.0.0.1	srv-bill.****.dp.ua:8081	OPTIONS * HTTP/1.0
9-0	8933	0/9/9	_	0.00	32	0	0.0	0.02	0.02	10.193.1.184		
10-0	8934	0/0/0	W	0.00	264	0	0.0	0.00	0.00	10.193.0.126	denied.****.dp.ua:80	GET / HTTP/1.1
11-0	-	0/0/1	.	0.00	263	0	0.0	0.00	0.00	127.0.0.1	srv-bill.****.dp.ua:8081	OPTIONS * HTTP/1.0
12-0	8936	0/6/6	_	0.04	35	0	0.0	0.07	0.07	10.193.1.184	denied.****.dp.ua:80	NULL
13-0	8937	0/6/6	_	0.05	186	63	0.0	0.05	0.05	10.193.1.184	****.dp.ua:443	NULL
14-0	8938	0/2/2	_	0.00	46	0	0.0	0.00	0.00	10.193.0.126	denied.****.dp.ua:80	GET /?&ts=1457265870757&s=87c413f83559a4b2d72fec84992c58cef171e
Srv	Child Server number - generation
PID	OS process ID
Acc	Number of accesses this connection / this child / this slot
M	Mode of operation
CPU	CPU usage, number of seconds
SS	Seconds since beginning of most recent request
Req	Milliseconds required to process most recent request
Conn	Kilobytes transferred this connection
Child	Megabytes transferred this child
Slot	Total megabytes transferred this slot
SSL/TLS Session Cache Status:
cache type: SHMCB, shared memory: 512000 bytes, current entries: 0
subcaches: 32, indexes per subcache: 88
index usage: 0%, cache usage: 0%
total entries stored since starting: 0
total entries replaced since starting: 0
total entries expired since starting: 0
total (pre-expiry) entries scrolled out of the cache: 0
total retrieves since starting: 0 hit, 0 miss
total removes since starting: 0 hit, 0 miss
Apache/2.4.10 (Debian) Server at 172.30.0.1 Port 80

Вроде ничего криминального, но сейчас особо нет активности.

fet4 ()
Ответ на: комментарий от fet4

И при этом уровне нагрузке задержки, про которые шла речь в первом сообщении, присутствуют?

mky ★★★★★ ()
Ответ на: комментарий от mky

Нет сейчас все в норме. Надо помониторить когда начнется.

fet4 ()
Ответ на: комментарий от fet4

Если вашу страницу можно загрузить с помощю ″wget″, то попробуйте его с опцией -d, как-то так:

date; wget --progress=dot:mega -d https://****.ru 2>&1 | while read A ; do echo `date` "$A" ; done
wget будет выводить разные стадии загрузки страницы, каждой строке будет напечатан таймштамп, поэтому можно будет поточнее установить где происходят тормоза, не особо я доверяю строке состояния chrome.

У date можно указать формат ″+%T.%N″, чтобы выводились наносекунды.

P.S. Вместо ″while read...″ можно ″tai64n | tai64nlocal″ или ts, или annotate-output, или однострочник на awk/perl.

mky ★★★★★ ()
Ответ на: комментарий от fet4

MaxRequestWorkers пришлось увеличить с 250 до 1000

mpm event используешь?

annulen ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.