

# RDS for PostgreSQL リードレプリカのトラブルシューティング
<a name="USER_PostgreSQL.Replication.ReadReplicas.Troubleshooting"></a>

RDS for PostgreSQL リードレプリカに関するよくある問題のトラブルシューティングについてのアイデアをいくつか以下に紹介します。

**リードレプリカの遅延の原因となるクエリを終了する**  
トランザクションの状態がアクティブまたはアイドルであり、データベース内で長時間実行されているトランザクションは、WAL レプリケーションプロセスへの妨害となる可能性があります。これは、レプリケーション遅延の悪化につながります。このため、PostgreSQL `pg_stat_activity` ビューを使用して、このようなトランザクションのランタイムを必ずモニタリングしてください。  
プライマリインスタンスで次のようなクエリを実行して、長時間実行されているクエリのプロセス ID (PID) を検索します。  

```
SELECT datname, pid,usename, client_addr, backend_start,
xact_start, current_timestamp - xact_start AS xact_runtime, state,
backend_xmin FROM pg_stat_activity WHERE state='active';
```

```
SELECT now() - state_change as idle_in_transaction_duration, now() - xact_start as xact_duration,* 
FROM  pg_stat_activity 
WHERE state  = 'idle in transaction'
AND   xact_start is not null
ORDER BY 1 DESC;
```
クエリの PID を特定したら、そのクエリを終了することができます。  
プライマリインスタンスで次のようなクエリを実行して、長時間実行されているクエリを終了します。  

```
SELECT pg_terminate_backend(PID);
```