Я получаю некоторые тайм-ауты запроса на моем конкретном маршруте и не знаю почему, но хотел бы получить несколько советов о том, как я могу найти и улучшить свои навыки отладки.
ЧтоЯ так понимаю, что журналы Heroku показывают 30-секундный тайм-аут, так как запрос никогда не заканчивался, так сказать, Heroku будет возвращать 503 автоматически, если запрос не завершится в течение 30 секунд.
Я установил logentries ипример журнала:
5:56.273149+00:00 heroku router - - at=error code=H12 desc="Request timeout" method=POST path="/league_fixtures" dyno=web.1 connect=0ms service=30000ms status=503 bytes=0 protocol=https
Этот маршрут выглядит как
app.post('/league_fixtures', async (req, res) => {
try {
const leagueName = req.body.league_name;
const fixtures = await queries.leagueFixtures(leagueName);
const file = await readFile('./views/partials/fixtures.ejs');
const fixtureTemplate = ejs.compile(file, { client: true });
const html = fixtureTemplate({ fixtures });
res.send({ html });
} catch (err) {
res.status(500).send({ error: err });
}
});
Я использую node-postgres, например, так:
const { Pool } = require('pg');
let config;
if (process.env.NODE_ENV === 'production' || process.env.NODE_ENV === 'staging') {
config = { connectionString: process.env.DATABASE_URL, ssl: true };
} else {
config = {
host: 'localhost',
user: 'myuser',
database: 'mydatabase',
};
}
const pool = new Pool(config);
pool.on('error', (err) => {
console.error('Unexpected error on idle client', err);
process.exit(-1);
});
async function leagueFixtures(leagueName) {
const client = await pool.connect();
try {
const response = await client.query("SELECT * FROM fixtures WHERE league_name = $1", [leagueName]);
} catch (e) {
console.error('Error Occurred', e);
} finally {
client.release();
}
return response.rows;
}
Есть ли что-то, что выпираетЯ делаю неправильно или какие-либо советы по отладке, чтобы помочь мне добраться до сути этого