捕獲診斷數據()
前面我們演示了狀態計數器和線程狀態的例子在本章結束之前將再給出一些oprofile和gdb 的輸出例子下面是一個問題服務器上的oprofile 輸出你能找到問題嗎?
samples % image name app name symbol name
/novmlinux /novmlinux (no symbols)
mysqld mysqld Query_cache::free_memory_block()
libc libc (no symbols)
mysqld mysqld my_hash_sort_bin
mysqld mysqld MYSQLparse()
libpthread libpthread pthread_mutex_trylock
mysqld mysqld read_view_open_now
mysqld mysqld Query_cache::invalidate_query_block_list()
mysqld mysqld Query_cache::write_result_data()
| Chapter :Profiling Server Performance
mysqld mysqld MYSQLlex()
libpthread libpthread __pthread_mutex_unlock_usercnt
mysqld mysqld __intel_new_memcpy
如果你的答案是查詢緩存那麼恭喜你答對了在這裡查詢緩存導致了大量的工作並拖慢了整個服務器這個問題是一夜之間突然發生的系統變慢了 倍但這期間系統沒有做過任何其他變更關閉查詢緩存後系統性能恢復了正常這個例子比較簡單地解釋了服務器內部行為對性能的影響
另外一個重要的關於等待分析的性能瓶頸分析工具是gdb 的堆棧跟蹤下面是對一個線程的堆棧跟蹤的輸出結果為了便於印刷做了一些格式化
Thread (Thread xfee (LWP ))
# xbebf in pthread_cond_wait@@GLIBC_ () from /libpthreadso
# xfeef in os_event_wait_low () at os/ossyncc:
# xfee in srv_conc_enter_innodb () at srv/srvsrvc:
# xfeeca in innodb_srv_conc_enter_innodb () at handler/ha_innodbcc:
# ha_innodb::index_read () at handler/ha_innodbcc:
# xc in ?? ()
# x in sub_select() ()
# xe in ?? ()
# xc in JOIN::exec() ()
# xa in mysql_select() ()
# xea in handle_select() ()
# xffa in ?? ()
# xce in mysql_execute_command() ()
# xc in mysql_parse() ()
# xa in dispatch_command() ()
# xba in do_command(THD*) ()
# xfbdd in handle_one_connection ()
# xbea in start_thread () from /lib/libpthreadso
# xbeedebd in clone () from /lib/libcso
# x in ?? ()
返回目錄高性能MySQL
編輯推薦
ASP NET開發培訓視頻教程
數據倉庫與數據挖掘培訓視頻教程
Oracle索引技術
From:http://tw.wingwit.com/Article/program/MySQL/201311/29699.html