server2.0 1.デコレータ
データベースクエリにアクセスするためのインタフェース
並行処理100平均11.8あたりの要求の平均応答時間6944ms
任意の処理なしインタフェース
第2の要求の平均応答時間3msのあたりの同時100平均99.9倍
要求の平均応答時間4msの当たり467.9 500の同時平均処理時間
秒あたりの同時936.8千回の平均要求の平均応答時間6msの
そして、同時実行性を高め、もはや処理速度を向上
現在、小さなメソッドのインタフェース
毎秒並行11回平均100リクエストに平均応答時間6647ms
2.インタフェースは、任意のデコレータを使用していません
任意の処理なしインタフェース
要求の平均応答時間3msの当たり100.2 100の同時平均処理時間
秒あたりの同時949.2千回の平均要求の平均応答時間4msの
16msの平均要求の第二の平均応答時間あたりの同時1500.4 2000回
データベースにアクセスするためのインタフェース
第2の要求の平均応答時間4086msごとの同時100平均16.2倍
概要
安定したデコレータなし、server2.0デコレーター・エラー・レートの上昇を追加した後。
データベースへの同時アクセス数の主な制限。
server2.0は、並行性を改善しませんでした
3.非同期デコレータ
任意の処理なしインタフェース
@ gen.coroutine
秒あたりの同時1296.5 1500回平均の要求の平均応答時間8msの
非同期のデータベース・アクセスを使用します
毎秒同時100平均96.1倍39ms要求の平均応答時間
elasticsearch_async インポートAsyncElasticsearch
ES = AsyncElasticsearch(
ホスト = [
" 117.78.26××:×××× " 、
" 117.78.26××:×××× "
]、
タイプは、 = " ES " 、
HTTP_AUTH =(" ××××× "、" ××××× " )、
タイムアウト = 60
)
@ web.asynchronous
@ gen.engine
デフポスト(自己、* argsを、** kwargsから):
結果 = { ' コード' 200は、ある' MSG ':' 成功を返す'、' データ' :{}}
本体 = { " サイズ":10、" _source ":[ " ID "、" 名前" ]、
" クエリ" 。
{ " BOOL ":{ " 必須" :[
{ " マッチ":{ " 名前":{ " クエリ":" 婚姻法" }}}、
{ " マッチ":{ " law_type ":{ " クエリ":" 法律" }}}、
]}}}
法律 = 降伏 self.es.search(" law_search_v2 "、" _DOC " 、身体)
#1 法律= "测试"
結果[ ' データ' ] [ ' 法律は' ] = 法律
self.finish(結果)
並行平均処理600は、75msの毎秒550回の平均応答時間を要求します
代わりに、同時要求の量を追加し、同時の数を減らすことができます
概要
非同期リクエストデータベースの安定性、スピード、大規模な同時
現在、データベース・サポート・非同期
ES:elasticsearch - 非同期サポートes6.0
MongoDBの:モーター
mysqlの:tornado_mysql
tornado.httpclient.AsyncHTTPClientにアクセスするためのインターフェースを使用して、
4.異なる非同期の区別
gen.coroutine @使用
難しいコード
使用ThreadPoolExecutor
開発すると