Redis運維和開發學習筆記(6) 監控Redis工作狀態-info命令

Redis運維和開發學習筆記(6) 監控Redis工作狀態-info命令

文章目錄

  • Redis運維和開發學習筆記(6) 監控Redis工作狀態-info命令
    • info server
    • info client
    • info memory
    • info persistence
    • info stats
    • info commandstats
    • info cpu
    • info cluster
    • info keyspace

info server

Redis服務器相關的通用信息

127.0.0.1:6379> info server
# Server
redis_version:3.2.12  # Redis服務器的版本號。
redis_git_sha1:00000000  # Git SHA1。
redis_git_dirty:0  # GIT臟數據標志
redis_build_id:7897e7d0e13773f 
redis_mode:standalone
os:Linux 3.10.0-957.21.3.el7.x86_64 x86_64
arch_bits:64
multiplexing_api:epoll # Redis使用的事件循環機制。
gcc_version:4.8.5
process_id:29581  # Redis服務器進程的進程號(PID)。
run_id:3739b19f38ecf64bac40b2b7704d799573f2d6c6 # 用于標識Redis服務器的隨機值(Redis的哨兵模式和集群模式會使用這個隨機值)。
tcp_port:6379 # TCP/IP的監聽端口。
uptime_in_seconds:2226082 # Redis服務器啟動至今的時間,以秒為單位。
uptime_in_days:25 # Redis服務器啟動至今的時間,以天為單位。
hz:10
lru_clock:5319706 # 每分鐘都會遞增的時鐘,用于LRU(Least Recently Used,最近最少使用)緩存管理。
executable:/root/redis-server # Redis服務器的可執行文件的路徑。
config_file:/etc/redis.conf # Redis服務器的配置文件的路徑。

info client

127.0.0.1:6379> info clients
# Clients
connected_clients:1 # 客戶端連接的數量(來自從機的連接除外)
client_longest_output_list:0 # 當前的客戶端連接之中,最長的輸出列表
client_biggest_input_buf:0 # 當前的客戶端連接之中,最大的輸入緩沖區
blocked_clients:0 # 由于阻塞調用(BLPOP、BRPOP、BRPOPLPUSH)而等待的客戶端的數量。

info memory

127.0.0.1:6379> info memory
# Memory
used_memory:812544 # Redis使用它的內存分配器(可以是標準的libc、jemalloc或tcmalloc分配器)分配的內存總量,以字節為單位。
used_memory_human:793.50K # Redis使用它的內存分配器分配的內存總量,顯示為用戶易于閱讀的格式。
used_memory_rss:2146304 # 操作系統所看到的為Redis分配的內存總量(也被稱為“駐留集大小(Resident Set Size)”)。這個內存總量是由諸如top(1)ps(1)之類的工具報告的。
used_memory_rss_human:2.05M  # 操作系統所看到的為Redis分配的內存總量,顯示為用戶易于閱讀的格式。
used_memory_peak:813552 # Redis消耗的內存峰值,以字節為單位。
used_memory_peak_human:794.48K # Redis消耗的內存峰值,顯示為用戶易于閱讀的格式。
total_system_memory:1927405568 # 系統內存總量,以字節為單位
total_system_memory_human:1.80G # 系統內存總量,顯示為用戶易于閱讀的格式
used_memory_lua:37888 # Lua腳本引擎使用的內存總量,以字節為單位。
used_memory_lua_human:37.00K # Lua腳本引擎使用的內存總量,顯示為用戶易于閱讀的格式。
maxmemory:0 # Redis能夠使用的最大內存上限(0表示沒有限制),以字節為單位。
maxmemory_human:0B # Redis能夠使用的最大內存上限,顯示為用戶易于閱讀的格式。
maxmemory_policy:noeviction # Redis使用的內存回收策略,可以是noeviction、allkeys-lru、volatile-lru、allkeys-random、volatile-random或volatile-ttl。
mem_fragmentation_ratio:2.64 # used_memory_rss和used_memory之間的比率。
mem_allocator:jemalloc-3.6.0 # Redis使用的內存分配器,在編譯時選擇指定。

在理想情況下,used_memory_rss的值只應當比used_memory的值稍微高一點。當常駐集內存(rss)遠大于已使用內存(used)時,這就意味著Redis服務器存在較多的內存碎片(內部的或外部的),這種情況可以通過檢查mem_fragmentation_ratio的值估計出來。當已使用內存(used)遠大于常駐集內存(rss)時,這就意味著有一部分Redis使用的內存被操作系統換出至磁盤了:可以預料到會產生明顯的延時。
因為,Redis無法控制如何將它分配的內存映射至內存頁面,當內存使用率飆升時,經常會導致較高的used_memory_rss值。
當Redis釋放內存時,會將內存歸還給分配器,然后分配器可能會(也可能不會)將內存歸還給操作系統。used_memory的值和操作系統報告的內存消耗值可能會有一些差異。這可能是由于Redis正在使用和釋放內存,但是釋放的內存尚未歸還給操作系統而導致的。通常,可以通過used_memory_peak的值來檢查Redis是否存在這種問題。

info persistence

127.0.0.1:6379> info persistence
# Persistence
loading:表示Redis是否正在加載一個轉儲文件的標志。
rdb_changes_since_last_save:從最近一次轉儲至今,RDB的修改次數。
rdb_bgsave_in_progress:表示Redis正在保存RDB的標志。
rdb_last_save_time:最近一次成功保存RDB的時間戳,基于Epoch時間。
rdb_last_bgsave_status:最近一次RDB保存操作的狀態。
rdb_last_bgsave_time_sec:最近一次RDB保存操作消耗的時間,以秒為單位。
rdb_current_bgsave_time_sec:如果Redis正在執行RDB保存操作,那么這個字段表示已經消耗的時間,以秒為單位。
aof_enabled:表示Redis是否啟用AOF日志功能的標志。
aof_rewrite_in_progress:表示Redis是否正在執行一次AOF重寫操作的標志。
aof_rewrite_scheduled:表示一旦Redis正在執行的RDB保存操作完成之后,是否就會調度執行AOF重寫操作的標志。
aof_last_rewrite_time_sec:最近一次AOF重寫操作消耗的時間,以秒為單位。
aof_current_rewrite_time_sec:如果Redis正在執行AOF重寫操作,那么這個字段表示已經消耗的時間,以秒為單位。
aof_last_bgrewrite_status:ok:最近一次AOF重寫操作的狀態。
aof_last_write_status:ok
  • 如果啟用了AOF功能,那么persistence分段將會新增額外的字段,如下所示:
aof_current_size:AOF文件當前的大小。aof_base_size:最近一次啟動或重寫時的AOF文件的大小。aof_pending_rewrite:表示一旦Redis正在執行的RDB保存操作完成之后,是否就會調度執行AOF重寫操作的標志。aof_buffer_length:AOF緩沖區的大小。aof_rewrite_buffer_length:AOF重寫緩沖區的大小。aof_pending_bio_fsync:表示后臺I/O隊列中的fsync的暫停任務。aof_delayed_fsync:被延遲的fsync調用的計數器。
  • 如果Redis正在執行加載操作,那么persistence分段將會新增額外的字段,如下所示:
loading_start_time:開始執行加載轉儲文件操作的時間戳,基于Epoch時間。loading_total_bytes:轉儲文件的總大小。loading_loaded_bytes:已經加載的轉儲文件的大小,以字節為單位。loading_loaded_perc:已經加載的轉儲文件的百分比。loading_eta_seconds:預計完成加載轉儲文件需要消耗的時間,以秒為單位。

info stats

127.0.0.1:6379> info stats
# Stats
total_connections_received:Redis服務器接受的連接總數。
total_commands_processed:Redis服務器處理的命令總數。
instantaneous_ops_per_sec:每秒鐘處理的命令數量。
total_net_input_bytes:通過網絡接收的數據總量,以字節為單位。
total_net_output_bytes:通過網絡發送的數據總量,以字節為單位。
instantaneous_input_kbps:每秒鐘接收數據的速率,以kbps為單位。
instantaneous_output_kbps:每秒鐘發送數據的速率,以kbps為單位。
rejected_connections:Redis服務器由于maxclients限制而拒絕的連接數量。
sync_full:Redis主機和從機進行完全同步的次數。
sync_partial_ok:Redis服務器接受PSYNC請求的次數。
sync_partial_err:Redis服務器拒絕PSYNC請求的次數。
expired_keys:鍵過期事件的總數。
evicted_keys:由于maxmemory限制,而被回收內存的鍵的總數。
keyspace_hits:在主字典中成功查找到鍵的次數。
keyspace_misses:在主字典中未能成功查找到鍵的次數。
pubsub_channels:客戶端訂閱的發布/訂閱頻道的總數量。
pubsub_patterns:客戶端訂閱的發布/訂閱模式的總數量。
latest_fork_usec:最近一次fork操作消耗的時間,以微秒為單位。
migrate_cached_sockets:遷移已緩存的套接字的數量。

info commandstats

127.0.0.1:6379> info commandstats
# Commandstats
cmdstat_get:calls=5,usec=30,usec_per_call=6.00
cmdstat_set:calls=11,usec=140,usec_per_call=12.73
cmdstat_del:calls=1,usec=5,usec_per_call=5.00
cmdstat_exists:calls=3,usec=10,usec_per_call=3.33
cmdstat_sadd:calls=2,usec=47,usec_per_call=23.50
cmdstat_mset:calls=1,usec=23,usec_per_call=23.00
cmdstat_expire:calls=1,usec=8,usec_per_call=8.00
cmdstat_keys:calls=4,usec=79,usec_per_call=19.75
cmdstat_dbsize:calls=1,usec=2,usec_per_call=2.00
cmdstat_type:calls=2,usec=11,usec_per_call=5.50
cmdstat_info:calls=104,usec=6071,usec_per_call=58.38
cmdstat_ttl:calls=4,usec=20,usec_per_call=5.00
cmdstat_client:calls=5,usec=78,usec_per_call=15.60
cmdstat_command:calls=7,usec=4174,usec_per_call=596.29

info cpu

127.0.0.1:6379> info cpu
# CPU
used_cpu_sys:1300.85
used_cpu_user:780.14
used_cpu_sys_children:0.01
used_cpu_user_children:0.00

info cluster

127.0.0.1:6379> info cluster
# Cluster
cluster_enabled:0 # 表示是否啟用Redis集群功能的標志。

info keyspace

127.0.0.1:6379> info keyspace
# Keyspace
db0:keys=6,expires=0,avg_ttl=0 
# 一個XXX表示數據庫的編號,第二個XXX表示鍵的數量,第三個XXX表示具有過期時間的鍵的數量,第四個XXX表示鍵的平均生存時間。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/382385.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/382385.shtml
英文地址,請注明出處:http://en.pswp.cn/news/382385.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Effective C++學習第九天

條款32:確定你的public繼承塑模出is-a模型class D(derived)以public形式繼承class B(base),則每一個類型為D的對象同時也是一個類型為B的對象,反之不成立,因此B比D表現出更加一般化的…

Effective C++學習第十天

條款36:絕不重新定義繼承而來的non-virtual函數non-virtual函數執行的是靜態綁定,在編譯器就已經決定,因此對象對用的函數只和指針的類型有關,而與指針所指的對象無關;記住non-virtual函數的性質:不變性凌駕…

Redis運維和開發學習筆記(7) 內存管理和過期策略

Redis運維和開發學習筆記(7) 內存管理和過期策略 文章目錄Redis運維和開發學習筆記(7) 內存管理和過期策略內存回收策略惰性刪除定時任務刪除maxmemory過期策略allkeys-lru主從搭建測試搭建完畢主從測試結果volatile-lru測試結果volatile-ttl測試結果allkeys-lru內存回收策略 …

Effective C++學習第十一天

條款41:了解隱式接口和編譯期多態面向對象編程世界總是以顯式接口(源碼可見的接口)和運行期多態(virtual)解決問題;對于templates及泛型編程的世界,隱式接口和編譯期多態顯得更加重要&#xff1…

Redis源碼分析(零)學習路徑筆記

文章目錄第一階段第二階段 熟悉Redis的內存編碼結構第三階段 熟悉Redis數據類型的實現第四階段 熟悉Redis數據庫的實現第五階段 熟悉客戶端和服務器端的代碼實現第六階段 這一階段主要是熟悉Redis多機部分的代碼實現關于測試方面的文件有一些工具類的文件如下SORT命令的實現一些…

Effective C++學習第十二天

條款47:請使用traits classes表現類型信息STL有五類迭代器分類,input迭代器(只讀,一次,向前)、output迭代器(可寫,一次,向前)、forward迭代器(讀/…

Redis源碼分析(一)redis.c //redis-server.c

Redis源碼分析(一)redis.c //redis-server.c 入口函數 int main() 4450 int main(int argc, char **argv) {4451 initServerConfig();4452 if (argc 2) {4453 ResetServerSaveParams();4454 loadServerConfig(argv[1]);4455 …

Linux 學習

1.linux文本命令行語言環境設置命令 查看當前語言環境: echo ¥LANG 修改: LANG選擇的語言環境’ 引申:https://blog.csdn.net/huoyunshen88/article/details/41113633 2.linux中的硬鏈接和軟連接 linux中文件的儲存方式&#xf…

vivo C/C++工程師視頻面試總結 20180802

1.自我介紹:有點兒緊張了,直接把自己簡歷上的一些信息信息說了一遍,說完之后在介紹了一下自己的平時的愛好和興趣,感覺面試官沒有理我,直接進入下一環節了。 2.項目詳情:主要是自己最近的一個項目和自己負…

Redis源碼分析(二)redis-cli.c

文章目錄1. int main()2. parseOptions(int argc, char **argv) 進行ip和port的改變3. lookupCommand(char *name) 查找命令,判斷命令合法3.2 strcasecmp(name,cmdTable[j].name)3.1 redisCommand cmdTable[]4. cliSendCommand(int argc, char **argv)4.1 cliConnec…

C語言中有bool變量嗎?

1.C/C中定義的數據類型: C語言中定義了6種基本數據類型:short,int,long,float,double,char 4種構造類型:數組,結構體(struct),共用類型(union),枚舉類型(enum) 指針類型和空類型 C語…

redis源碼剖析(三)——基礎數據結構

文章目錄SDS鏈表字典這篇文章關于 Redis 的基礎數據:SDS SDS (Simple Dynamic String)是 Redis 最基礎的數據結構。直譯過來就是”簡單的動態字符串“。Redis 自己實現了一個動態的字符串,而不是直接使用了 C 語言中的字符串。 sds 的數據結…

C++迭代器使用錯誤總結

指針和迭代器的區別: 迭代器: (1)迭代器不是指針,是類模板,表現的像指針。他只是模擬了指針的一些功能,通過重載了指針的一些操作符,->,*, --等封裝了指針,是一…

redis源碼剖析(四)跳表

文章目錄整數集合跳躍表壓縮列表總結整數集合 當一個集合只包含整數,且這個集合的元素不多的時候,Redis 就會使用整數集合 intset 。首先看 intset 的數據結構: typedef struct intset {// 編碼方式uint32_t encoding;// 集合包含的元素數量…

vivo C/C++工程師 HR視頻面試問題總結20180807

一開始沒想到這次視頻面是HR面試,還以為是技術面試,畢竟上次面試的時候技術問題問的相對比較少,所以面試準備方向有點兒錯了,不過還是總結一下具體問題。 1)自我介紹:吸取了上次自我介紹的經驗,…

在Redis客戶端設置連接密碼 并演示密碼登錄

我們先連接到Redis服務 然后 我們要輸入 CONFIG SET requirepass “新密碼” 例如 CONFIG SET requirepass "A15167"這樣 密碼就被設置成立 A15167 我們 輸入 AUTH 密碼 例如 AUTH A15167這里 返回OK說明成功了 然后 我們退出在登錄就真的需要 redis-cli -h IP地…

redis源碼剖析(五)—— 字符串,列表,哈希,集合,有序集合

文章目錄對象REDIS_STRING (字符串)REDIS_LIST 列表REDIS_SET (集合)REDIS_ZSET (有序集合)REDIS_HASH (hash表)int refcount(引用計數器)unsigned lru:REDIS_LRU_BITS對象 對于 Re…

函數sscanf小結

1.sscanf用于處理固定格式的字符串&#xff0c;包含在頭文件<cstdio>中&#xff0c;函數原型為&#xff1a; int sscanf(const char *buffer,const char*format,[]argument ]...); 其中:buffer代表著要存儲的數據&#xff0c;format 代表格式控制字符串&#xff0c;arg…

redis源碼剖析(六)—— Redis 數據庫、鍵過期的實現

文章目錄數據庫的實現數據庫讀寫操作鍵的過期實現數據庫的實現 我們先看代碼 server.h/redisServer struct redisServer{...//保存 db 的數組redisDb *db;//db 的數量int dbnum;... }再看redisDb的代碼&#xff1a; typedef struct redisDb {dict *dict; /*…

多益網絡 視頻面試面試總結20180816

1.首先是自我介紹&#xff1a;因為等了半個小時&#xff0c;所以有點兒緊張&#xff0c;只說了一下自己的學校&#xff0c;愛好和興趣&#xff1b; 2.介紹了一個自己的最成功的項目&#xff1a;我介紹了一個關于GPS導航的項目&#xff0c;介紹了項目的內容和項目的一些工作&am…