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


サーバーインストールエラー
--------------------------

RHEL 8
^^^^^^

1. RHEL 8に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`` パッケージを削除します。

.. code:: shell

   dnf remove python3-mod_wsgi

PEMサーバーを再度インストールしてみてください。

2. RHEL
   8で、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

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

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クライアントがロードされていない場合は、
``/var/log/httpd/error_log`` ファイルの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ウェブサーバーが稼働しているかどうかを確認します。

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

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