Так что у меня возникает эта случайная проблема, которая наносит ущерб моей системе. Это небольшая встроенная система ARM, которая обслуживает веб-страницы с использованием httpd busybox. Страницы написаны на PHP и есть бэкэнд sqlite3.
Время от времени при доступе к страницам системы система начинает зависать. Что я обнаружил, так это то, что виновник, кажется, что php-cgi иногда не заканчивается. Что-то происходит, и оно застревает открытым, и это приводит к тому, что база данных sqlite3, к которой он обращался, блокируется, в результате чего любой другой процесс завершается с ошибкой, пытаясь получить к нему доступ, и в основном все замедляется до сканирования, пытающегося и не получающего доступа к этой базе данных. Если вы продолжите просматривать страницы, которые они только что создали, и довольно скоро у вас будет что-то вроде этого:
CPU: 34.2% usr 24.5% sys 41.0% nic 0.0% idle 0.0% io 0.0% irq 0.1% sirq
Load average: 10.99 3.36 1.31 23/131 2172
PID PPID USER STAT VSZ %VSZ CPU %CPU COMMAND
1229 1208 root S 107m 21.3 0 39.8 Router -t /tmp/volatileTables.d
1224 1208 root S 81852 15.9 0 14.4 Messenger -t /tmp/volatileTable
2103 2102 root R N 16740 3.2 0 2.1 /usr/bin/php-cgi all_stream.php
2106 2105 root R N 16264 3.1 0 2.1 /usr/bin/php-cgi all_stream.php
2109 2108 root R N 15612 3.0 0 2.1 /usr/bin/php-cgi all_stream.php
2112 2111 root R N 15092 2.9 0 2.1 /usr/bin/php-cgi all_stream.php
2115 2114 root R N 14708 2.8 0 2.1 /usr/bin/php-cgi all_stream.php
2118 2117 root R N 14296 2.7 0 2.1 /usr/bin/php-cgi all_stream.php
2121 2120 root R N 14036 2.7 0 2.1 /usr/bin/php-cgi all_stream.php
2124 2123 root R N 13908 2.7 0 2.1 /usr/bin/php-cgi all_stream.php
2127 2126 root R N 13908 2.7 0 2.1 /usr/bin/php-cgi all_stream.php
2131 2130 root R N 13908 2.7 0 2.1 /usr/bin/php-cgi all_stream.php
2135 2134 root R N 13776 2.6 0 2.1 /usr/bin/php-cgi all_stream.php
2142 2141 root R N 13776 2.6 0 2.1 /usr/bin/php-cgi all_stream.php
2145 2144 root R N 13776 2.6 0 2.1 /usr/bin/php-cgi all_stream.php
2151 2150 root R N 13776 2.6 0 2.1 /usr/bin/php-cgi all_stream.php
2160 2159 root R N 13332 2.5 0 2.1 /usr/bin/php-cgi all_stream.php
2163 2162 root R N 12936 2.5 0 2.1 /usr/bin/php-cgi all_stream.php
2166 2165 root R N 12780 2.4 0 2.1 /usr/bin/php-cgi all_stream.php
2154 2153 root R N 13776 2.6 0 1.9 /usr/bin/php-cgi all_stream.php
~ #
Однажды мы смогли получить среднюю нагрузку до 50! Messenger и Router — это приложения, пытающиеся получить доступ к базе данных, заблокированной всеми сценариями php.
Какие-нибудь подсказки для меня относительно того, как продолжить? Должен ли я использовать какой-то другой метод для запуска файлов php? Должен ли я попробовать lighttpd вместо httpd с busybox? Есть ли что-то в моем скрипте php.ini, которое мне нужно изменить? Что-то плохое я делаю в своих скриптах php?
Любая подсказка в правильном направлении была бы полезна!
Задача ещё не решена.
Других решений пока нет …