[Groonga-commit] groonga/groonga at bb8163f [master] Add how to troubleshooting

Back to archive index

HorimotoYasuhiro null+****@clear*****
Fri Jul 14 14:49:38 JST 2017


HorimotoYasuhiro	2017-07-14 14:49:38 +0900 (Fri, 14 Jul 2017)

  New Revision: bb8163f79ebb05037e3afecd0f533e631fb1f163
  https://github.com/groonga/groonga/commit/bb8163f79ebb05037e3afecd0f533e631fb1f163

  Merged a004f1a: Merge pull request #744 from komainu8/feature/add_troubleshooting

  Message:
    Add how to troubleshooting

  Added files:
    doc/source/troubleshooting/how_to_analyze_of_error_message.rst

  Added: doc/source/troubleshooting/how_to_analyze_of_error_message.rst (+74 -0) 100644
===================================================================
--- /dev/null
+++ doc/source/troubleshooting/how_to_analyze_of_error_message.rst    2017-07-14 14:49:38 +0900 (9f4787d)
@@ -0,0 +1,74 @@
+.. -*- rst -*-
+
+.. highlightlang:: none
+
+エラーメッセージの解析方法
+==========================
+
+Groongaは様々なエラーメッセージを出力しますが、出力されたエラーメッセージ
+をもとに、原因を解析する方法はいままで、明文化していませんでした。
+ここでは、エラーメッセージごとの解析方法を記載します。
+
+
+ソケットエラーの解析方法
+------------------------
+
+ここでは、Groongaで発生するソケットエラーの解析方法について説明します。
+
+
+例
+^^
+
+Groongaのエラーログで以下のようなエラーログがあります。(xxxxxには任意の数字が入ります。)::
+
+  socket error[xxxxx]: no buffer: accept
+
+
+解析方法
+^^^^^^^^
+
+まず、ソケットエラーを扱うマクロである、SOERR というキーワードでGroongaのソースコードをgrepします。
+
+次に見つかったSOERRの引数にacceptが入っているSOERRをさがします。
+すると次のSOERRが見つかります。ログに出ているのはacceptのみなので、下記の最後の行が例で出力されたエラーメッセージに該当するとわかります。::
+
+  lib/com.c:      SOERR("listen - start accept");
+  lib/com.c:      SOERR("listen - disable accept");
+  lib/com.c:        SOERR("accept");
+
+
+該当するエラー出力の周辺のコードを見ると以下のようになっています。::
+
+  grn_sock fd = accept(com->fd, NULL, NULL);
+  if (fd == -1) {
+    if (errno == EMFILE) {
+      grn_com_event_stop_accept(ctx, ev);
+    } else {
+      SOERR("accept");
+    }
+  return;
+  }
+
+上記のコードから、acceptを実行してエラーが発生したことが確認できます。
+次は、acceptが失敗した原因を追っていきます。
+
+acceptが失敗した理由は、::
+
+  [10055]: no buffer
+
+から追うことができます。
+10055はWindowsのソケットエラーコードを表しています。また、no bufferはSOERRマクロ内でGroongaが用意しているメッセージです。
+Windowsのシステムエラーコードから調査しても良いですし、Groongaが出力しているエラーメッセージから調査しても良いです。
+
+Windowsのシステムエラーコードは以下のページに一覧があります。::
+
+  https://msdn.microsoft.com/ja-jp/library/windows/desktop/ms740668(v=vs.85).aspx
+
+システムエラーコードまたは、エラーメッセージから調査すると、acceptが失敗した理由は、WSAENOBUFSであることがわかります。さらに、WSAENOBUFSが発生する原因を調査するとWSAENOBUFSが発生する原因は以下であることがわかります。::
+
+  No buffer space available.
+
+  An operation on a socket could not be performed because the system lacked sufficient buffer space or because a queue was full.
+
+上記のメッセージから、acceptが失敗する原因は、メモリー不足または、接続数が多すぎる場合であることがわかりました。
+あとは、エラーメッセージが出た際の状況から、接続数が多かったのか、メモリ不足だったのかを判断します。
-------------- next part --------------
HTML����������������������������...
Télécharger 



More information about the Groonga-commit mailing list
Back to archive index