2

1.6.0_20 を使用して以前のバージョンにロールバックすると、アプリケーションは 60 秒以内に起動します。以下の事実を踏まえて、問題をデバッグして解決するにはどうすればよいですか?

  • 私のアプリケーションは Play 1.2.5 を使用しています
  • ログを見ると、アプリケーションが PostgreSQL データベースに接続していることがわかります。これは通常、R10 エラーの前の最後のログです。

--UPDATE プラグインを作成し、10 秒後に閉じられる偽のポート バインドを発行しました。これでバインドの問題は解決しましたが、今はメモリの問題があります。高負荷下では、アプリが 600M のメモリを使用していた可能性があります。しかし、今では約 1500M と表示されており、継続的に増加しています。

@Override
public void onConfigurationRead() {
    final int port = Integer.parseInt(Play.configuration.getProperty("http.port"));

    try {
        // Create a new server socket and set to non blocking mode
        final ServerSocketChannel ssc = ServerSocketChannel.open();
        ssc.configureBlocking(false);
        InetSocketAddress isa = new InetSocketAddress(port);
        ssc.socket().bind(isa);
        Logger.info("Fake bind to port %d", port);

        Timer timer = new Timer();
        timer.schedule(new TimerTask() {
            @Override
            public void run() {
                try {
                    ssc.socket().close();
                    Logger.info("Fake port closed");
                } catch (IOException ioe) {
                    Logger.error(ioe, "Cannot close fake port");
                }
            }
        }, 10000);
    } catch (IOException ioe) {
        Logger.error(ioe, "Cannot open fake port");
    }

    Cache.forcedCacheImpl = RedisCacheImpl.getInstance();
}   
4

1 に答える 1