サーバーごとに1分に1回、複数のWebサーバーにクエリを実行するPythonアプリケーションを作成しています。アプリケーションは数分間正常に実行され、その後、すべてのサーバーが次のエラーで応答を開始します。
次のcURLエラーが発生しました:要求されたURLがエラーを返しました:400 Bad Request
これが発生すると、発信帯域幅ペグと両方のCPUコアが80%を超えて動作していることがわかります(このマシンの負荷は通常非常に軽いです)。ただし、メモリ使用量には大きな影響はありません。
特定のアプリケーションから送信されたすべてのリクエストのリクエスト全体をキャプチャする方法はありますか?または、Pythonでリクエスト全体をキャプチャして、デバッグ目的で出力することはできますか?サーバーにクエリを実行するコードの一部は次のとおりです。
output = cStringIO.StringIO()
c = pycurl.Curl()
c.setopt(c.URL, url)
c.setopt(c.USERAGENT, 'Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:17.0) Gecko/20100101 Firefox/17.0')
c.setopt(c.WRITEFUNCTION, output.write)
c.setopt(c.CONNECTTIMEOUT, 10)
c.setopt(c.TIMEOUT, 15)
c.setopt(c.FAILONERROR, True)
c.setopt(c.NOSIGNAL, 1)
try:
c.perform()
toReturn = output.getvalue()
output.close()
return toReturn
except pycurl.error, error:
errno, errstr = error
print 'The following cURL error occurred: ', errstr
このマシンは、Kubuntu12.10とPython2.7を実行する6GiBRAMを搭載したデュアルコア2.0GHzIntelボックスです。すべてがVIMでコード化されているため、偽のIDEコードが暴走することはありません。