Comments (30)
はじめの準備
- ssh接続できることを確認
- scpで~/.ssh 以下に、デプロイ用のssh鍵を配置
- configファイルに、git接続用のconfigを追加
- vscode remote で接続する
- .gitignoreを編集して、不要なファイル類をignoreする
- gitユーザとメールアドレスを設定
- .vscode/settings のファイルを作成し、カラーテーマを設定しておく(リモートだということがわかるように)
- vscodeでcommitするファイルを確認してからcommit、Pushまで実施。
- Pushできないときはssh鍵のpermissionが悪いかも
- git pushされてきたことを確認したら手元にgit cloneして素材を持ってくる
- リモート側からのpushが終わったら、mainブランチへのPushができないように設定しておく(事故防止)
from isucon2022.
- npm scripts類がざっと動く状態にして、いくつか動作確認。
- gtopがうまくうごかないので一旦放置
- htopうごかしながら、 1回目のベンチを適当に実施
15:16:01.765762 score: 1123(1162 - 39) : pass
from isucon2022.
datadogの準備をする
from isucon2022.
datadog 準備
- apiキー発行 (organizationの鍵じゃないとダメかも)
- datadogエージェントをインストール。
- agentのログを確認しながら、datadog側にデータが来るのをまつ
- datadog画面側で確認できたら、監視しながら再度ベンチマーク実施
- 15:28:18.744797 score: 1135(1174 - 39) : pass
- この時点ではプロセス監視はまだ入れてない。
- datadogのプロセス監視用の設定を追加 (yamlを編集)
- process監視もenableにしたので、再度ベンチ実施
from isucon2022.
- goアプリにdatadog入れてみた。動くかどうか確認のためベンチ実施
- ちょっとラグがあるので注意。なんとか動かせてDatadog側でプロファイリングできるようになった。
- 15:56:41.015815 score: 957(1000 - 43) : pass
- ここまでの準備で1時間。練習しないと時間かかるか
from isucon2022.
- get /api/isu が影響大きそうなことがわかるのでクエリもみてみる
- どうやら、クエリも重たそう
- SELECT * FROM isu_condition WHERE jia_isu_uuid = ? ORDER BY timestamp DESC LIMIT ?" がやる価値ありそう
from isucon2022.
DataGrip準備してなかったのでここで準備する。最初のコードリーディングの際に合わせてDBもちぇっくするので、その時に入れよう
from isucon2022.
SELECT * FROM isu_condition WHERE jia_isu_uuid = ? ORDER BY timestamp DESC LIMIT ?" がやる価値ありそう
- isu_condition のDDLみてみると、IndexがPKしか無いことがわかる。
- explainしてクエリをみてみる
explain SELECT * FROM isu_condition WHERE jia_isu_uuid = 'c88df01f-3424-46b4-9ecd-23f06ac1205e' ORDER BY timestamp DESC LIMIT 1
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
---|---|---|---|---|---|---|---|---|---|
1 | SIMPLE | isu_condition | ALL | NULL | NULL | NULL | NULL | 54070 | Using where; Using filesort |
- 1行とるだけなのに、refが多すぎるのでindex貼れば解決しそう。filesortもかかってるので、複合Index。
create index isu_condition_jia_isu_uuid_index
on isu_condition (jia_isu_uuid);
create index isu_condition_jia_isu_uuid_timestamp_index
on isu_condition (jia_isu_uuid, timestamp);
id | select_type | table | type | possible_keys | key | key_len | ref | rows | Extra |
---|---|---|---|---|---|---|---|---|---|
1 | SIMPLE | isu_condition | ref | isu_condition_jia_isu_uuid_timestamp_index | isu_condition_jia_isu_uuid_timestamp_index | 144 | const | 992 | Using where |
from isucon2022.
- HirokiYoshida837/ISUCON11-qualify-practice-b#8
- 16:24:39.474558 score: 949(1000 - 51) : pass
下がった?微妙そう?
- indexを複合じゃなくしたけどあんまりこれも上がらなかった。一旦おいておくか
- 16:28:07.245851 score: 984(1028 - 44) : pass
from isucon2022.
- drop probabilityをもっと上げる
- 0.95にしたらスコアが上がった 16:50:39.314109 score: 2363(2386 - 23) : pass
- 0.98 にしたら更に上がった 16:52:44.512643 score: 9036(9038 - 2) : pass
from isucon2022.
ログ周りを触ったらスコアが減ったので戻す?
- 16:58:04.798671 score: 7120(7124 - 4) : pass
- 17:00:36.410813 score: 8806(8808 - 2) : pass
何度か実施しても振れてるのでわからず。いったんこのままで
from isucon2022.
DEBUGレベルのログがとまらない。なぜ? -> datadogの影響だった。
from isucon2022.
drop probabilityを下げたので、ボトルネックが変わった。
from isucon2022.
from isucon2022.
queryの方をみたかんじ、以下のクエリがつらい?改善できないか考えてみる
SELECT * FROM
isu_condition
WHEREjia_isu_uuid
= ? ORDER BY timestamp DESC
from isucon2022.
ロジックをみてると、全件取得は不要なので、LIMIT 1 つければいけそうに見える。
from isucon2022.
2回実行して少し上がったようにも見えなくはない。
- 17:13:37.759511 score: 9034(9036 - 2) : pass
- 17:15:18.940794 score: 9358(9360 - 2) : pass
from isucon2022.
from isucon2022.
insertをbulk化したらスコアが少し上がった。実際に、insertのクエリ数も減ってる。
20:23:31.390590 score: 9898(9900 - 2) : pass
from isucon2022.
drop probabilityを少し下げ見てる
from isucon2022.
drop probabilityを少し下げ見てる
下げたらスコア落ちた。モット工夫しないと下げられないのか
from isucon2022.
- 色々やって1万こえた
- 22:27:01.248673 score: 10158(10160 - 2) : pass
from isucon2022.
nginxのgzipは自分でビルドしないといけないのか、、、
https://hack-le.com/nginxgzip/
from isucon2022.
時間かかったので終了。できなかったことややるべきこととかをまとめたい
from isucon2022.
- プレースホルダ置換
- DSAS開発者の部屋:go-sql-driver/mysql でプレースホルダ置換をサポートしました
- http://dsas.blog.klab.org/archives/52191467.html
from isucon2022.
https://tech.mirrativ.stream/entry/2021/08/25/120426
from isucon2022.
初期構築で結構時間がかかってしまったので、手元からscpしたりansibleしたりできるような環境を準備しておくべき
from isucon2022.
何度か素振りして、初期の構築は2,30分かからないくらいにはできた。(datadogの導入もできる)
from isucon2022.
急に途中でスコアが半分くらい下がってしまったが原因不明。コミット戻してもスコア変わらず。なんで?
from isucon2022.
close
from isucon2022.
Related Issues (7)
- ISUCON11 練習 - 環境構築 HOT 20
- ISUCON - 初期準備する事項をまとめる HOT 2
- ISUCON - 参加準備 HOT 3
- ISUCON - Datadog使ってみる HOT 30
- ISUCON11 - 参考リンク類メモ HOT 14
- ISUCON - 競技中の観点まとめ HOT 6
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from isucon2022.