Troubleshooting
===============



既知のインストールと構成の問題
------------------------------

既存のmod_wsgiとの競合
^^^^^^^^^^^^^^^^^^^^^^

システムにmod_wsgiの競合するバージョンがある場合、RHEL、Rocky、AlmaまたはOracle
LinuxにPEMサーバーをインストールするときにこのエラーが表示されます。

.. code:: text

   [root@etpgxlt firstuser]# dnf install edb-pem
   Updating Subscription Management repositories.
   Last metadata expiration check: 0:01:33 ago on Wed 30 Mar 2022 01:28:16 AM EDT.
   Error: 
    Problem: problem with installed package python3-mod_wsgi-4.6.4-4.el8.s390x
     - package python39-mod_wsgi-4.7.1-4.module+el8.4.0+9822+20bf1249.s390x conflicts with python3-mod_wsgi provided by python3-mod_wsgi-4.6.4-4.el8.s390x
     - package python39-mod_wsgi-4.7.1-4.module+el8.4.0+9822+20bf1249.s390x conflicts with python3-mod_wsgi provided by python3-mod_wsgi-4.6.4-3.el8.s390x
     - package edb-pem-server-8.4.0-7.rhel8.s390x requires python39-mod_wsgi >= 4.7, but none of the providers can be installed
     - package edb-pem-8.4.0-7.rhel8.s390x requires edb-pem-server = 8.4.0-7.rhel8, but none of the providers can be installed
     - cannot install the best candidate for the job
   (try to add --allowerasing to command line to replace conflicting packages or --skip-broken to skip uninstallable packages or --nobest to use not only best candidate packages)
   [root@etpgxlt firstuser]# 

この問題を解決するには、\ ``python3-mod_wsgi``
パッケージを削除し、PEMのインストールを再試行します。

.. code:: shell

   dnf remove python3-mod_wsgi

JITからのエラー
^^^^^^^^^^^^^^^

PEMバックエンドPostgresインスタンスでJITが有効になっている場合、RHEL、Rocky、AlmaまたはOracle
LinuxでPEMサーバーを構成した後、ワーカー.logにこのエラーが表示される場合があります。

.. code:: text

   Tue Nov 28 03:02:19 2023 WARNING: Error clearing zombies: ERROR:  failed to JIT module: Added modules have incompatible data layouts: E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-a:8:16-n32:64 (module) vs E-m:e-i1:8:16-i8:8:16-i64:64-f128:64-v128:64-a:8:16-n32:64 (jit)
   CONTEXT:  SQL statement "WITH running_agent_job AS (
           SELECT j.jobid, j.agent_id
           FROM pem.job j LEFT JOIN pem.joblog jl ON (j.jobid = jl.jlgjobid)
           WHERE jl.jlgstatus = r AND agent_id = $1 AND j.jobarid != agent_runtime_id
           ORDER BY j.jobid, jl.jlgjobid
           FOR UPDATE SKIP LOCKED
       ), joblog_status_update AS (
           UPDATE pem.joblog jl SET jlgstatus=d
           FROM running_agent_job r
           WHERE r.jobid = jl.jlgjobid AND jl.jlgstatus=r
           RETURNING r.agent_id, jl.jlgjobid, jl.jlgid
       ), jobsteplog_status_update AS (
           UPDATE pem.jobsteplog js SET jslstatus=d
           FROM joblog_status_update jl
           WHERE js.jsljlgid = jl.jlgid AND js.jslstatus=r
           RETURNING jl.agent_id, jl.jlgjobid AS job_id
       )
       UPDATE pem.job j SET jobprocessid=NULL, jobnextrun=NULL, jobarid=NULL
       FROM (SELECT DISTINCT agent_id, job_id FROM jobsteplog_status_update) js
       WHERE js.job_id = j.jobid"
   PL/pgSQL function pem.clear_job_zombies(integer) line 8 at SQL statement

エラーを解決するには、バックエンドデータベースサーバーの\ ``postgresql.conf``
ファイルで\ ``jit`` パラメーターを\ ``off`` に設定します。

.. code:: ini

   jit=off

バックエンドデータベースサーバーを再起動します。

RHEL Python 3.9標準ライブラリのバグによるクラッシュ
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

RHEL 9、Rocky 9、Alma 9またはOracle Linux 9サーバーが影響を受けるPython
3.9バージョンを実行している場合、PEM構成中に次のエラーが表示されます。

.. code:: text

   TypeError: realpath() got an unexpected keyword argument strict

Python
3.9の最新のパッチバージョンに更新することにより、エラーを解決できます。この問題がPythonバージョン3.9.21のRedHatディストリビューションに存在しないことを確認しました。

.. code:: shell

   dnf upgrade python3

PEM構成を再試行します。

PEMサーバーの再構成
-------------------

状況によっては、PEMサーバーのアンインストール、再インストール、およびサーバーの再構成が必要になる場合があります。そのためには

1. PEMサーバー構成を削除し、アンインストールします。

.. code:: shell

       /usr/edb/pem/bin/configure-pem-server.sh –un

2. PEMパッケージを削除します。

.. code:: shell

       yum erase edb-pem-server

3. ``pem`` データベースを削除します。

.. code:: sql

       DROP DATABASE pem

4. 証明書を\ ``/root/.pem/`` から別の場所に移動します。

.. code:: shell

       mv /root/.pem/* <new_location>

5. ``agent.cfg`` ファイルを\ ``/usr/edb/pem/agent/etc/agent.cfg``
   から別の場所に移動します。

.. code:: shell

       mv /usr/edb/pem/agent/etc/agent.cfg <new_location>

6. 次に、PEMサーバーを再度構成します。

.. code:: shell

       /usr/edb/pem/bin/configure-pem-server.sh

PEM Webアプリケーションがロードされません
-----------------------------------------

PEM Webアプリケーションがロードされていない場合は、 :ref:`check the web services are running <Managing a PEM server>` 
。実行中の場合は、Webサーバーとアプリケーションエラーログを確認します。

WebサーバーとしてNGINXを使用している場合、Webサーバーログは\ ``/var/log/nginx/error.log``
にあり、アプリケーションログは\ ``/var/log/edb-uwsgi/pem.log``
にあります。

Apache HTTPDを使用している場合 ログは\ ``/var/log/httpd/error_log``
にあります。このファイルには、Webサーバーとアプリケーションのエラーメッセージの両方が含まれています。

WebサーバーとしてApache
HTTPDを使用しており、ログに次のメッセージが表示される場合。

.. code:: text

   Truncated or oversized response headers received from daemon process edbpem: /usr/edb/pem/web/pem.wsgi

``/etc/httpd/conf`` フォルダーにあるApache ``httpd.conf``
ファイルの下部に次のステートメントを追加します。

.. code:: shell

   WSGIApplicationGroup %{GLOBAL}

次のステートメントを追加した後、HTTPDサーバーを再起動します。

.. code:: shell

   sudo systemctl restart httpd.service

PostgreSQLサーバーへの接続エラー
--------------------------------

PostgreSQLサーバーに接続すると、次のいずれかのエラーメッセージが表示される場合があります。メッセージを注意深く確認します。各エラーメッセージは、問題を解決するために必要な情報を取り入れようとします。

- **サーバーへの接続が失われました**
  このエラーメッセージは、接続の試行が指定されたしきい値よりも時間がかかったことを示します。
  [サーバー]ダイアログボックスに表示される接続プロパティに問題があるか、ネットワーク接続の問題、またはサーバーが実行されていない可能性があります。

- **サーバーに接続できませんでした 接続は拒否されました**
  このエラーには2つの理由が考えられます。

  - データベースサーバーは実行されていません。サーバーを起動します。
  - サーバーは、表示されているアドレスでTCP/IP要求を受け入れるように構成されていません。

セキュリティ上の理由から、PostgreSQLサーバーは「そのままでは」TCP/IPポートでリッスンしません。代わりに、TCP/IP要求をリッスンするように有効にする必要があります。バージョン7.3.xおよび7.4.xの\ ``postgresql.conf``
ファイルに\ ``tcpip = true``
を追加します。バージョン8.0.x以降に\ ``listen_addresses='*'``
を追加します。これらの追加により、サーバーは任意のIPインターフェイスでの接続を受け入れます。

詳細については、
`runtime configuration <http://www.postgresql.org/docs/current/interactive/runtime-config.html>`_ に関するPostgreSQLドキュメントを参照してください。

- **FATAL pg_hba.confエントリー**
  接続時にPEMがこのメッセージを表示する場合、ネットワーク経由でサーバーに正しく接続できますが、接続を受け入れるように構成されていません。クライアントは、データベースの合法的なユーザーとして検出されませんでした。

サーバーに接続するには、PEMクライアントのホストからの接続を受け入れるようにデータベースサーバー上の\ ``pg_hba.conf``
ファイルを構成します。データベースサーバホスト上の\ ``pg_hba.conf``
ファイルを変更し、次のフォームでエントリを追加します。

- ``host template1 postgres 192.168.0.0/24 md5`` IPV4ネットワークの場合
- ``host template1 postgres ::ffff:192.168.0.0/120 md5``
  IPV6ネットワークの場合

詳細については、
`client authentication <http://www.postgresql.org/docs/current/interactive/client-authentication.html>`_ に関するPostgreSQLドキュメントを参照してください。

- **FATAL パスワード認証に失敗しました**
  ``password authentication failed for user``
  エラーメッセージは、入力したパスワードに問題がある可能性を示しています。パスワードを再試行して、正しく入力したことを確認します。エラーメッセージが返された場合は、正しいパスワードを持っていること、サーバーへのアクセスが許可されていること、およびサーバーの\ ``postgresql.conf``
  構成ファイルでアクセスが正しく構成されていることを確認します。

PEM Webサーバーの接続性チェック
-------------------------------

次のコマンドを実行して、クライアントがPEMサーバーに到達し、応答を取得できるかどうかを確認します。

.. code:: shell

   curl https://<SERVER_ADDR>:8443/pem/misc/ping -k -i
   __OUTPUT__
   PING

``<SERVER_ADDR>`` は、PEMサーバーのIPアドレスです。出力\ ``PING``
は、PEM Webサーバーが稼働していることを確認します。
