Время ожидания запроса Heroku H12 - Узел JS - PullRequest
0 голосов
/ 22 декабря 2018

Я получаю некоторые тайм-ауты запроса на моем конкретном маршруте и не знаю почему, но хотел бы получить несколько советов о том, как я могу найти и улучшить свои навыки отладки.

ЧтоЯ так понимаю, что журналы 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;
}

Есть ли что-то, что выпираетЯ делаю неправильно или какие-либо советы по отладке, чтобы помочь мне добраться до сути этого

...