strace -ttp
11:34:51.761589 recvfrom(7, "VV\345\204\300K\227\0\335\7\0\0\0\0\0\0\0T\0\0\0\3cursor\0;\0\0"..., 101, 0, NULL, NULL) = 101
11:34:51.761738 poll([{fd=8, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)
11:34:51.761814 sendto(8, "*2\r\n$6\r\nEXISTS\r\n$19\r\ndbdata_co"..., 42, MSG_DONTWAIT, NULL, 0) = 42
11:34:51.761909 poll([{fd=8, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)
11:34:51.761979 poll([{fd=8, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=8, revents=POLLIN}])
11:34:51.762032 recvfrom(8, ":1\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 4
11:34:51.762113 poll([{fd=8, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)
11:34:51.762160 sendto(8, "*2\r\n$3\r\nGET\r\n$19\r\ndbdata_count"..., 39, MSG_DONTWAIT, NULL, 0) = 39
11:34:51.762219 poll([{fd=8, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)
11:34:51.762260 poll([{fd=8, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=8, revents=POLLIN}])
11:34:51.762439 recvfrom(8, "$7\r\n3096842\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 13
11:34:51.762616 sendmsg(7, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\354\0\0\0", iov_len=4}, {iov_base="\302K\227\0", iov_len=4}, {iov_base="\0\0\0\0", iov_len=4}, {iov_base="\335\7\0\0", iov_len=4}, {iov_base="\0\0\0\0", iov_len=4}, {iov_base="\0", iov_len=1}, {iov_base="\327\0\0\0\2find\0\10\0\0\0product\0\3filter\0\16\0"..., iov_len=215}], msg_iovlen=7, msg_controllen=0, msg_flags=0}, MSG_NOSIGNAL) = 236
11:34:51.762746 recvfrom(7, 0x2c6c0c0, 4, 0, NULL, NULL) = -1 EAGAIN (Resource temporarily unavailable)
11:34:51.762819 poll([{fd=7, events=POLLIN|POLLERR|POLLHUP}], 1, 299999) = 1 ([{fd=7, revents=POLLIN}])
11:34:51.763003 recvfrom(7, "i\0\0\0", 4, 0, NULL, NULL) = 4
11:34:51.763067 recvfrom(7, "yV\345\204\302K\227\0\335\7\0\0\0\0\0\0\0T\0\0\0\3cursor\0;\0\0"..., 101, 0, NULL, NULL) = 101
11:34:51.763195 poll([{fd=8, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout)
11:34:51.763272 sendto(8, "*2\r\n$6\r\nEXISTS\r\n$19\r\ndbdata_co"..., 42, MSG_DONTWAIT, NULL, 0) = 42
11:34:51.763368 poll([{fd=8, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 1 ([{fd=8, revents=POLLIN}])
11:34:51.763424 recvfrom(8, ":", 1, MSG_PEEK, NULL, NULL) = 1
11:34:51.763505 poll([{fd=8, events=POLLIN|POLLERR|POLLHUP}], 1, 60000) = 1 ([{fd=8, revents=POLLIN}])
11:34:51.763574 recvfrom(8, ":1\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 4
11:34:51.763652 poll([{fd=8, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0strace: Process 22913 detached
^C[root@s218663 ]# lsof -nPp 22913
kill -SIGALRM 上面的沒(méi)反應(yīng),還是一直在刷,要ctrl+c后好一會(huì)才會(huì)退出
lsof -nPp
php 22913 www mem REG 253,0 19248 67224700 /usr/lib64/libdl-2.17.so
php 22913 www mem REG 253,0 1136944 67224702 /usr/lib64/libm-2.17.so
php 22913 www mem REG 253,0 14424 67224769 /usr/lib64/libutil-2.17.so
php 22913 www mem REG 253,0 995840 67225072 /usr/lib64/libstdc++.so.6.0.19
php 22913 www mem REG 253,0 43712 67224765 /usr/lib64/librt-2.17.so
php 22913 www mem REG 253,0 109976 67224761 /usr/lib64/libresolv-2.17.so
php 22913 www mem REG 253,0 40600 67224698 /usr/lib64/libcrypt-2.17.so
php 22913 www mem REG 253,0 163312 67224685 /usr/lib64/ld-2.17.so
php 22913 www 0r FIFO 0,9 0t0 904733306 pipe
php 22913 www 1w FIFO 0,9 0t0 904733307 pipe
php 22913 www 2w FIFO 0,9 0t0 904733308 pipe
php 22913 www 3u REG 253,0 0 100664776 /tmp/.ZendSem.dOIuh6 (deleted)
php 22913 www 4r REG 253,0 92 108152689 /www/wwwroot/webman/start.php
php 22913 www 5u sock 0,7 0t0 905615217 protocol: TCP
php 22913 www 6u IPv4 904723315 0t0 TCP *:16701 (LISTEN)
php 22913 www 7u IPv4 904741326 0t0 TCP 127.0.0.1:49320->127.0.0.1:27017 (ESTABLISHED)
php 22913 www 8u IPv4 904748195 0t0 TCP 127.0.0.1:53248->127.0.0.1:6379 (ESTABLISHED)
[root@s218663 ]# php start.php status
Workerman[start.php] status
----------------------------------------------GLOBAL STATUS----------------------------------------------------
Workerman version:4.1.14 PHP version:8.1.13
start time:2024-03-08 10:12:30 run 0 days 1 hours
load average: 20.51, 21.3, 21.7 event-loop:\Workerman\Events\Select
2 workers 17 processes
worker_name exit_status exit_count
webman 0 0
monitor 0 0
----------------------------------------------PROCESS STATUS---------------------------------------------------
pid memory listening worker_name connections send_fail timers total_request qps status
22898 N/A http://0.0.0.0:16701 webman N/A N/A N/A N/A N/A [busy]
22899 2.43M http://0.0.0.0:16701 webman 0 0 2 1401 0 [idle]
22900 2.43M http://0.0.0.0:16701 webman 0 0 2 1439 0 [idle]
22901 2.43M http://0.0.0.0:16701 webman 0 0 2 1427 0 [idle]
22902 N/A http://0.0.0.0:16701 webman N/A N/A N/A N/A N/A [busy]
22903 2.62M http://0.0.0.0:16701 webman 0 0 2 1447 0 [idle]
22904 2.37M http://0.0.0.0:16701 webman 0 0 2 1645 0 [idle]
22905 N/A http://0.0.0.0:16701 webman N/A N/A N/A N/A N/A [busy]
22906 2.43M http://0.0.0.0:16701 webman 0 0 2 1660 0 [idle]
22907 2.43M http://0.0.0.0:16701 webman 0 0 2 1526 0 [idle]
22908 N/A http://0.0.0.0:16701 webman N/A N/A N/A N/A N/A [busy]
22909 N/A http://0.0.0.0:16701 webman N/A N/A N/A N/A N/A [busy]
22910 2.44M http://0.0.0.0:16701 webman 0 0 2 1567 0 [idle]
22911 2.43M http://0.0.0.0:16701 webman 0 0 2 1627 0 [idle]
22912 2.44M http://0.0.0.0:16701 webman 1 0 2 1499 0 [idle]
22913 N/A http://0.0.0.0:16701 webman N/A N/A N/A N/A N/A [busy]
22914 1.47M none monitor 0 0 2 0 0 [idle]
----------------------------------------------PROCESS STATUS---------------------------------------------------
Summary 21M - - 1 0 22 15238 0 [Summary]
poll([{fd=8, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 1, 0) = 0 (Timeout) 這個(gè)timeout是導(dǎo)致的問(wèn)題嗎,如果是要怎么知道是什么問(wèn)提,如果是fd=8 的 sendto(8, "*2\r\n$6\r\nEXISTS\r\n$19\r\ndbdata_co"..., 42, MSG_DONTWAIT, NULL, 0) = 42這個(gè)嗎,但是這個(gè)是存到redis的統(tǒng)計(jì)數(shù)據(jù)量,會(huì)是redis查詢(xún)慢導(dǎo)致的嗎,但是查詢(xún)r(jià)edis又正常。。,運(yùn)行第二天這個(gè)start的網(wǎng)站打開(kāi)就都504了,每次都要重啟,應(yīng)該如何找到導(dǎo)致的問(wèn)題
public static function countItemsByDb($dbname): array
{
$key=$dbname.'_countItems';
$count=0;
if (Redis::exists($key)) {
$count=Redis::get($key);
}else{
$manager = self::createManager($dbname);
$command = new Command(["count" => self::COLLECTION_PRODUCT]);
$result = $manager->executeCommand($dbname, $command);
if($result) {
$count = current($result->toArray())->n;
Redis::set($key, $count);
}
}
$result=[];
$result['total']=$count;
return $result;
}
這樣統(tǒng)計(jì)一次然后就直接取redis了,不應(yīng)該會(huì)導(dǎo)致busy,Redis::exists會(huì)判斷失敗導(dǎo)致多次統(tǒng)計(jì)嗎
只有這一處,其他是redis和文件的, 改成文件保存了,,這個(gè)查找失敗次數(shù)是不是就會(huì)導(dǎo)致沒(méi)讀到
Redisv7.2.4
字段 當(dāng)前值 說(shuō)明
uptime_in_days 42 已運(yùn)行天數(shù)
tcp_port 6379 當(dāng)前監(jiān)聽(tīng)端口
connected_clients 2845 連接的客戶(hù)端數(shù)量
used_memory_rss 19.43 MB Redis當(dāng)前占用的系統(tǒng)內(nèi)存總量
used_memory 16.66 MB Redis歷史分配內(nèi)存的峰值
mem_fragmentation_ratio 1.17 內(nèi)存碎片比率
total_connections_received 23851 運(yùn)行以來(lái)連接過(guò)的客戶(hù)端的總數(shù)量
total_commands_processed 17216116232 運(yùn)行以來(lái)執(zhí)行過(guò)的命令的總數(shù)量
instantaneous_ops_per_sec 39006 服務(wù)器每秒鐘執(zhí)行的命令數(shù)量
keyspace_hits 17048828399 查找數(shù)據(jù)庫(kù)鍵成功的次數(shù)
keyspace_misses 165370811 查找數(shù)據(jù)庫(kù)鍵失敗的次數(shù)
hit 99.04 查找數(shù)據(jù)庫(kù)鍵命中率
latest_fork_usec 1343 最近一次 fork() 操作耗費(fèi)的微秒數(shù)
結(jié)帖,經(jīng)過(guò)幾天觀察,是predis導(dǎo)致的,去掉 ,用默認(rèn)的redis就正常
//'client' => 'predis',
'default' => [
'host' => getenv('REDIS_HOST') ?: '127.0.0.1',
'password' => getenv('REDIS_PASSWORD'),
'port' => getenv('REDIS_PORT')?: 6379,
'database' => getenv('REDIS_DATABASE')?: 0,
//'maxmemory-policy' => getenv('redis_maxmemory_policy')?:'volatile-lru',// 設(shè)置內(nèi)存清理策略
//'compress' => true, // 開(kāi)啟壓縮
],