2014年9月アーカイブ


ある日突然、EC2からRDSへのアクセスがブロックされるようになった。

error: 'Host 'hogehoge.compute.internal' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts''

どうやら、コネクションエラーが多数発生したため、当該インスタンスからの接続のみを拒否している模様。

unblock with 'mysqladmin flush-hosts''

と書いてあるので、以下のようなコマンドで復活しました。

mysqladmin -h hogehoge.rds.amazonaws.com -P 3306 -u username --password=hogehoge flush-hosts

一瞬はまったのはブロックされているインスタンスから flush-hosts を発行しても拒否されるということです。
(当然なのでしょうが。。。)

RDSに接続できる別のインスタンス(マシン)から flush-hosts を発行する必要があります。

また、コネクションエラーになった根本原因を取り除いておかないと再発の可能性があります。







- (void)viewDidAppear:(BOOL)animated
{
    timer = [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(someSelector) userInfo:nil repeats:YES] ;
}


といった感じでタイマーをセットしたが、viewが表示されても一向に someSelector が呼ばれない。

viewController の呼び出し場所によっては、同じコードでも呼ばれるときがある。

調べた結果以下のようにメインスレッドでタイマーをセットすると呼ばれるようになりました。


- (void)startTimer
{
    timer = [NSTimer scheduledTimerWithTimeInterval:0.1f target:self selector:@selector(someSelector) userInfo:nil repeats:YES] ;
}

- (void)viewDidAppear:(BOOL)animated
{
        [self performSelectorOnMainThread:@selector(startTimer) withObject:nil waitUntilDone:NO] ;
}



このアーカイブについて

このページには、2014年9月に書かれたブログ記事が新しい順に公開されています。

前のアーカイブは2014年2月です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 5.13-ja