tamuraです。

今年もISUCONに参加しました。 今回は新メンバーakimotoを加えての参戦です。


前回記事: ISUCON5に参加して惨敗した件

 

参考実装にJavaがないのでちょっと困りましたが、akimotoがPHPを使ったことがあるらしいので、それ一点に賭けました!


今回もslackのログを抜き出します。


※ライブ感を出すために誤字脱字は極力修正していません


2016/08/27

ISUCON参加します!

tamura [12:29]
http://isucon.net/archives/48165644.html
 ISUCON公式Blog
ISUCON6 オンライン予選の参加登録を開始&参加チームとメンバーリスト : ISUCON公式Blog
追記 8/26 9:30 参加チームを追加追記8/18 10:15 学生枠の対象について追記追記 8/16 17:25 参考実装の追加を追記追記 8/16 14:00 本選出場チームの選出について追記追記 8/5 17:55 仕様OSについて追記--こんにちは、櫛井です。本日から参加登録を開始いたしました。 (6KB)


今年もISUCON参戦します!

ことしはあきもっちゃんも参戦です!

どうやってslackにinviteするかわからないので、自分でやってもらいますww
akimoto [12:30] joined #isucon by invitation from @tamura
tamura [12:56] isuconタスク - ubuntu16.04TSが出たので、それがらみの何かがあるに違いない - とりあえずnginx知っておこう - MySQLの設定もできるようになっておこう - create index - slowlog - キャッシュバッファ - memcached使えるようになる! - 今回はJavaはないみたいなので、どうしようwww とりあえずwiki作っておきましたんで、前日までにできることはちょっとまとめたいと思います。 あと場所どうしましょう・・・また漫画喫茶ですかね~w

Javaないんかい・・・・。

2016/09/08

使用言語を決めます。

tamura [9:01]
http://isucon.net/archives/48396740.html
 ISUCON公式Blog
ISUCON6 予選レギュレーション : ISUCON公式Blog
参加者予選参加者(以下参加者)はチームで登録するものとし、チームは2名もしくは3名での登録とする。予選参加者は予選の第1日目、第2日目のいずれかのみに参加することができる。参加者は「一般枠」「学生枠」のいずれかに登録すること。学生枠: チームメンバー全員が学生・ 


高速化対象のソフトウェアとして主催者から Perl, Ruby, Python, PHP, Node.js, Go, Scala によるWebアプリケーションが与えられる。 ただし各々の性能が一致することを主催者は保証しない。どれをベースに用いてもよいし、独自で実装したものを用いてもよい。

PHPでいきますか。

それともJavaで実装するか・・・・。PHPっすかね・・・・ww

PHPわからんwwww
akimoto [9:03] PHP わからないのになぜPHP でいくと言ったのか…(笑)
tamura [9:05] Mr. @akimoto ががんばってくれるに違いないwww
tamura [9:16] @akimoto あきもっちゃんPHPわかるっしょ?
akimoto [10:41] 分かる分からないで言えば分かります(笑)

2016/09/17

場所を決めます。

yoshimura [15:09]
場所ですが新宿でいいすかw?
店はたくさんあるのでいくつか3丁目付近でピックアップしてあいてるやつでいきますか!
正直日曜日にどれくらい埋まっているかってのが、想像つかないすw
http://moopa.jp/shops/mp_shinjukuhon/index.html
http://manboo.co.jp/shop/shop2.php?act=0431
 moopa.jp
インターネットカフェ - Moopa! 新宿本店
新宿駅のインターネットカフェ・ムーパは、マンガ、インターネットはもちろん、様々なコンテンツを凝縮。ダーツ、高性能PC、マッサージチェア、シャワー等に加え、フリードリンクでフードメニューも充実。オンラインゲーム稼働率No.1 
  manboo.co.jp
マンガ喫茶マンボー 店舗詳細
ネットカフェ・マンガ喫茶マンボーのオフィシャルサイトです。関東、東海、関西地方の店舗情報など。マンガ喫茶マンボーは快適でゆったりくつろげる空間をご用意してお待ちしております。 
tamura [15:16] マンボーはダメじゃないすかね~?ww
yoshimura [15:16] マンボーやばいんすかw? ちょっとなかのレイアウトが不明なのがびみょっすねw
tamura [15:25] あれは純粋なまんが喫茶だと思いますww
yoshimura [15:28] なるりっすw 見ると一応PCとか書いてあったんであるのかと思いましたww 漫画専門ぽいとこはとりあえず避けたがいいすねw
tamura [16:09] Moopaでいきましょうか! トリプルシートがありますしw なくてもフラットで分かれてもいいしwww are? あれ? トリプルシートのほうって禁煙じゃないwww ぉぅふ
yoshimura [18:02] おうふw 禁煙キボンヌww タバコの煙だと鼻水がとまらんくなるとです・・・w まぁ大丈夫かww 一応マスクもっていきますww
tamura [18:03] ww 禁煙側に分かれて座りましょうww あ、Webカメラで遊びましょうwww
yoshimura [18:04] なるりw あぁWebカメラのアプリつけとけばいいのか! アカウントなしでURLだけでいけるやつありましたよね!
tamura [18:04] たしかWebサービスあったはず
yoshimura [18:04] https://appear.in/ appear.in appear.in Video conversations with up to 8 people for free - no login, no downloads. Create a video room. Share the link. Appear together. Try it now at https://appear.in (13KB) これでいけますわ!
tamura [18:06] みんなPCにカメラついてますよね?ww

場所が決まりました。

2016/09/18

08:30

今回は時間どおりに開始できました。

tamura [8:28]
仮面ライダー見てたら遅れそうっす・・・w

今日が実質最終回なんでw
akimoto [8:28] (笑)
tamura [8:30] 今から風呂なんで、もし私の身に何かあったら先に入っててくださいw
yoshimura [8:58] 仮面ライダーww
tamura [8:58] 九時半三丁目ですわ
akimoto [9:09] 9時30分お店くらいですかね、迷わなければ…
yoshimura [9:23] ついた! tuita

yoshimura [9:23] A2からでれば1分で着きますw
yoshimura [9:24]
yoshimura [9:25] matsuri
祭りぽいのやってるのか、片付けか?
yoshimura [9:25] あつい
tamura [9:26] 池袋なう
yoshimura [9:27] 油断すると渋谷までいきそうになりますw
tamura [9:27] ww
akimoto [9:27] とりあえず着きました

10:00 (残り8時間)

合流して朝飯等を買って入店です。

tamura [10:00]
はじまた!
tamura [10:03] 今デプロイ中です
yoshimura [10:03] あざすぅ!とりあえずisusconログインまでいきやした! デプロイりょかいす!
tamura [10:04] setup
準備完了!
yoshimura [10:05] www 酒がいい感じw バックには飯のメニューww
tamura [10:05] やるきなす!w
akimoto [10:05] www
yoshimura [10:05] 意外にここさむすw
tamura [10:05] 唐揚げ280円・・・・悩む・・・w
yoshimura [10:05] ww ビーフカレー100円 そっちのほうがやすいというw
tamura [10:06] 漫画喫茶でやるもんじゃないっすねwww
yoshimura [10:06] たしかにw
akimoto [10:06] え、いまさらwwww

akimotoはまじめです。

yoshimura [10:15]
これノートPCで開くと画面うまるw
と思ってここのそなえつけのにきりかえようとしたらカメラなすw
tamura [10:18] 満喫のPCでappearを入れておいて 手元のノートは普通に使えばOKすよww
yoshimura [10:19] そうすねw あれカメラいけましたw?
tamura [10:19] たぶん、ゲストって出てるのが私が満喫のPCでログインしているやつですwww
yoshimura [10:22] なるりw BlogPaint

ハングアウトみたいに顔が見えるサービスを使うときはマルチモニタ必須ですね。

10:30 (残り8時間30分)

いちおうそれぞれの公開鍵はもらっていたんですが、 設定が面倒になったので秘密鍵を共有することにしました。

tamura [10:22]
すみません。

秘密鍵の修正をお願いします。

-----BEGIN RSA PRIVATE KEY-----
... snip ...
-----END RSA PRIVATE KEY-----

~/.ssh/id_rsa_isucon6

の中身を上のやつと置き換えてください

Host isucon6
 HostName xx.xx.xx.xx
 User isucon
 IdentityFile ~/.ssh/id_rsa_isucon6

て書くといけます
tamura [10:23] @akimoto ちょっと行って説明します。
tamura [10:27] あきもちゃんOK
akimoto [10:42] ブラウザからIP入力するとログイン画面が出るって噂ですが、ログイン画面が出ないんですが・・・
tamura [10:43] え?w http://xx.xx.xx.xx/ これでますよね?w
akimoto [10:45] あ、これでいいんすか
tamura [10:53] とりあえず今なんのアプリで動いているのか調べますwww
akimoto [10:53] お願いします。

1名まだsshで入れない人が・・・・w

yoshimura [10:53]
ssh でPermission denied (publickey). がでるんで設定みなおいておきますw
tamura [10:54] ww
yoshimura [10:54] ちとここは酒飲みますわw まだ始まってないのに飲むというw
akimoto [10:54] ヒドスw
tamura [10:55] ゴールデン街で反省会っすねwww

11:00 (残り7時間)

akimoto [11:05]
プシュ
yoshimura [11:05] とりあえず飲みますw
tamura [11:05] プシュwwww

とりあえずベンチを動かさないと始まらないので、 アプリをPHPにして1回目のベンチを動かします。

tamura [11:14]
ベンチリクエストだして、msqlのキャッシュのせてからをおなしゃす
yoshimura [11:14] なんかあれすは、sshのやつはmac固有の問題なかんじがw はい、たぶんもう少しでssh解決できそうな予感すw

君まだやってたのかwww

akimoto [11:19]
あ、今perlで動いてるんですね?
tamura [11:19] まじで?ww
tamura [11:20] あ、perlっっぽい
tamura [11:20] ww
tamura [11:20] phpにしておきますww
akimoto [11:20] おねがいします!
[11:23] PHPに切り替えたらとりあえずベンチマーク投げる感じですか?
tamura [11:25] @akimoto とりえずベンチ投げちゃってください
akimoto [11:26] なげました

そして100円カレーをいただきます。

yoshimura [11:27]
お、カレースカw
tamura [11:31] あきもっちゃんのところに3つきますwwww
akimoto [11:31] とりにきてくださいww
yoshimura [11:31] ww
tamura [11:31] www
akimoto [11:32] うるさいwwww ※店員さんがカレーを運んできたんですが、戸を開けるときにすごくうるさかったんですwww
tamura [11:42] カレー北www
akimoto [11:42] ごちになります! potatoどうしますかw
tamura [11:43] www 食ってくださいwww
tamura [11:43] あと2つぽポテト頼みましたwww

Appear.inでお互いの顔を見えるようにしていたので、 akimotoのところに3つカレーが届いたのが画面越しに見えたときは吹きましたwww

カレー100円は安いです

curry
tamura [11:42]
いまperlなんで

phpをゆうこうにします
akimoto [11:42] おなしゃす
tamura [11:53] sudo su - rootになれるんで なっちゃってください
akimoto [11:55] なりました
tamura [11:56] 設定よろしくです
akimoto [11:58] 設定って? php?
tamura [11:59] いい感じにwww
akimoto [11:59] 適当すぎでしょwwww
tamura [12:00] とりあえずphp動かしたすwwww

12:00 (残り6時間)

ベンチ結果

tamura [12:01 PM]
自チームの最新結果
Status    PASS
Score    1489
Best    1546
Messages    
リクエストがタイムアウトしました (POST /keyword)
リクエストがタイムアウトしました (POST /login)
リクエストがタイムアウトしました (POST /stars)
Time    2016-09-18 11:36:24 +0900 JST

ここからスタートです。

akimoto [12:04]
うひょw

502badgatewayが出るようになってしまい申したw

nginxの設定が必要なのか・・・nginx知らないですけどwww

え、phpってインストールしないといけないんですか?
akimoto [12:15] ネットワークにつながらなくなったwwww
akimoto [12:16] お、復活した?
yoshimura [12:17] ときどききれます

akimoto落ち着けwww

tamura [12:21]
slowlogを有効にして、いちどベンチを動かしましょうww
akimoto [12:23] slowlogは@yoshimura担当?
yoshimura [12:24] ちょっともうすこしたってもだめだったらakimoのとこでやりますw
tamura [12:24] ww
tamura [12:24] slowlogいけるしょw
yoshimura [12:24] 完全にはまってますw sshでw
tamura [12:25] wwww
yoshimura [12:25] 13時までがんばりますw

君まだsshやってたのかwww

そしてakimotoはISUCONの前提がわからずにあせってます。

akimoto [12:37]
これapacheとかも入れないといけないんですか?
akimoto [12:37] システムがよくわからんですw
tamura [12:37] たぶんはいってますwww
akimoto [12:38] まじすか
akimoo [12:39] apacheってhttpdとかでしたっけ?
akimoto [12:39] root@isucon6-qualifier:~# systemctl status httpd ● httpd.service Loaded: not-found (Reason: No such file or directory) Active: inactive (dead)
akimoto [12:40 PM] はいってねーよ的なこと言われてるようなよくわからないような
tamura [12:40] nginx
akimoto [12:41] nginxがあればいける?みたいな?

13:00 (残り5時間)

ヒーローは遅れてやってくるけど彼はヒーローなのかどうなのか。

yoshimura [13:01]
やっとkita

http://dev.classmethod.jp/smartphone/mac-ssh-hole/
 Developers.IO | AWS/iOS技術者の必読メディア:クラスメソッド株式会社ブログ
MacのSSH認証キーの落とし穴 | アドカレ2013 : SP #2 | Developers.IO
さて、このアドペンとカレンダーに初めて参戦する大村です。初日から平井くんがガッツリアプリを作ってボリューミーになっていますが、今回は少しおとなしく、以前はまってしまったmacのSSHキーでの落とし穴の件でも話したいと思い […] 
yoshimura [13:02] 要因は2つありましてw 最初は /etc/ssh_config をみにいってましたw なのでそれをリネームして それでもPermission denied (publickey)
yoshimura [13:02] yukiyoshimura ~/.ssh $ sudo ssh-add ~/.ssh/id_rsa_isucon6 Identity added: /Users/yukiyoshimura/.ssh/id_rsa_isucon6 (/Users/yukiyoshimura/.ssh/id_rsa_isucon6) yukiyoshimura ~/.ssh $ ssh isucon6 Welcome to Ubuntu 16.04.1 LTS (GNU/Linux 4.4.0-36-generic x86_64) * Documentation: https://help.ubuntu.com * Management: https://landscape.canonical.com * Support: https://ubuntu.com/advantage Get cloud support with Ubuntu Advantage Cloud Guest: http://www.ubuntu.com/business/services/cloud 0 packages can be updated. 0 updates are security updates.
yoshimura [13:02] ここに追加してやといけたw
tamura [13:03] まじすか
yoshimura [13:03] これからがんばりますw

がんばれ

yoshimura [13:03]
mysqlってどこまで設定やってます?w

クエリキャッシュ有効かどうかチェックして、 スロークエリログの設定をやろうかとおもうのですが、もうおわってますかね?
tamura [13:04] なにもやってんすww
yoshimura [13:04] おkすw これから挽回しますw
yoshimura [13:04] まずはDBの設定周りを調べていきますw

akimotoががんばります

akimoto [13:14]
phpに切り替わった!!!かも?

とりあえず502にはならなくなりました。
tamura [13:15] ktkr
yoshimura [13:15] とりあえず現状のmy.cnf isucon@isucon6-qualifier:/etc/mysql$ cat my.cnf [mysqld_safe] socket = /var/run/mysqld/mysqld.sock nice = 0 [mysqld] user = mysql pid-file = /var/run/mysqld/mysqld.pid socket = /var/run/mysqld/mysqld.sock port = 3306 basedir = /usr datadir = /var/lib/mysql tmpdir = /tmp lc-messages-dir = /usr/share/mysql skip-external-locking bind-address = 127.0.0.1 max_allowed_packet = 16M log_error = /var/log/mysql/error.log
yoshimura [13:16] ログ的な感じで残していきますw
yoshimura [13:28] user/passはおなじかw ようやくログインすw

これから本領発揮です・・・か? だけどMySQLの再起動に手間取りますw

yoshimura [13:39]
mysql> show variables like 'query_cache%';
+------------------------------+---------+
| Variable_name                | Value   |
+------------------------------+---------+
| query_cache_limit            | 1048576 |
| query_cache_min_res_unit     | 4096    |
| query_cache_size             | 1048576 |
| query_cache_type             | OFF     |
| query_cache_wlock_invalidate | OFF     |
+------------------------------+---------+
5 rows in set (0.93 sec)

クエリキャシュタイプが無効なので

my.cnf にquery_cache_type=1 をたしてちと

mysql再起動します
yoshimura [13:40] あがったらいいますw

14:00 (残り4時間)

akimoto [14:14]
mysql死んだ?
yoshimura [14:15] stop でエラーになってたんですが、落ちてからの〜 起動しないすw 少々おまちを・・w なんか祭りw? きこえないすかw?
akimoto [14:15] さっき怒号が聞こえましたねw
yoshimura [14:16] ww  ほいさw 2016-09-18T05:16:24.728750Z 0 [Note] InnoDB: Removed temporary tablespace data file: "ibtmp1" 2016-09-18T05:16:24.728793Z 0 [Note] Shutting down plugin 'MEMORY' 2016-09-18T05:16:24.728811Z 0 [Note] Shutting down plugin 'PERFORMANCE_SCHEMA' 2016-09-18T05:16:24.728858Z 0 [Note] Shutting down plugin 'MRG_MYISAM' 2016-09-18T05:16:24.728895Z 0 [Note] Shutting down plugin 'MyISAM' 2016-09-18T05:16:24.728929Z 0 [Note] Shutting down plugin 'CSV' 2016-09-18T05:16:24.728955Z 0 [Note] Shutting down plugin 'sha256_password' 2016-09-18T05:16:24.728978Z 0 [Note] Shutting down plugin 'mysql_native_password' 2016-09-18T05:16:24.729126Z 0 [Note] Shutting down plugin 'binlog' 2016-09-18T05:16:24.729250Z 0 [Note] /usr/sbin/mysqld: Shutdown complete このログが出続けるw ちとトイレいって頭冷やしてきますw
akimoto [14:16] wwww
akimoto [14:23] これなんかわかります? 2016-09-18T05:22:26.955199Z 0 [ERROR] unknown variable 'ly-messages-dir=/usr/sha re/mysql'
akimoto [14:30] ly-messages-dir -> lc-messages-dir では???
yoshimura [14:32] なんでしょうw このへんってまったく変えてないんすよねw なんかずっとshutdownプロセスが走っているような気がするんどすが、ちょっと確認中す ちょっとそれみてみますw きりわけとしてmy.cnfを最初に戻しますw 戻しました それにしてもここゲキ寒くないすかw????
akimoto [14:36] 戻したmy.confはlc-messages-dirになってるっぽいす
yoshimura [14:37] おぉwww ほんとだw じゃあ編集時にかわってしまってたのかww
yoshimura [14:38] root@isucon6-qualifier:/home/isucon# /usr/sbin/mysqld stop
yoshimura [14:39] とりあえずmysqlはいま動いているので動かかすならいますw
yoshimura [14:40] とめられなかったのでw ベンチするのであればちょっとまっておきますw
akimoto [14:40] ベンチしないので 止めて大丈夫です
yoshimura [14:41] 2016-09-18T05:39:31.268434Z 0 [Note] InnoDB: Check that you do not already have another mysqld process using the same InnoDB data or log files. 2016-09-18T05:39:31.268450Z 0 [Note] InnoDB: Unable to open the first data file 2016-09-18T05:39:31.268461Z 0 [ERROR] InnoDB: Operating system error number 11 in a file operation. 2016-09-18T05:39:31.268468Z 0 [ERROR] InnoDB: Error number 11 means 'Resource temporarily unavailable' 2016-09-18T05:39:31.268472Z 0 [Note] InnoDB: Some operating system error numbers are described at http://dev.mysql.com/doc/refman/5.7/en/operating-system-error-codes.html 2016-09-18T05:39:31.268477Z 0 [ERROR] InnoDB: Cannot open datafile './ibdata1' 2016-09-18T05:39:31.268483Z 0 [ERROR] InnoDB: Could not open or create the system tablespace. If you tried to add new data files to the system tablespace, and it failed here, you should now edit innodb_data_file_path in my.cnf back to what it was, and remove the new ibdata files InnoDB created in this failed attempt. InnoDB only wrote those files full of zeros, but did not yet use them in any way. But be careful: do not remove old data files which contain your precious data! 2016-09-18T05:39:31.268487Z 0 [ERROR] InnoDB: Plugin initialization aborted with error Cannot open a file 2016-09-18T05:39:31.869143Z 0 [ERROR] Plugin 'InnoDB' init function returned error. 2016-09-18T05:39:31.869187Z 0 [ERROR] Plugin 'InnoDB' registration as a STORAGE ENGINE failed. 2016-09-18T05:39:31.869197Z 0 [ERROR] Failed to initialize plugins. 2016-09-18T05:39:31.869202Z 0 [ERROR] Aborting 2016-09-18T05:39:31.869211Z 0 [Note] Binlog end 2016-09-18T05:39:31.869284Z 0 [Note] Shutting down plugin 'MyISAM' 2016-09-18T05:39:31.869300Z 0 [Note] Shutting down plugin 'CSV' 2016-09-18T05:39:31.869518Z 0 [Note] /usr/sbin/mysqld: Shutdown complete
akimoto [14:41] とめられなかったというのは・・・?
yoshimura [14:41] りょうかいすw じゃあとめにいきますw ちょっとこのエラーを調査してからすw
akimoto [14:41] あれ、うまくいったのでは?
yoshimura [14:43] 普通に接続できるのでとまってなすなかんじすw
akimoto [14:45] systemctl status mysql でみると少し前に再起動してそうでしたけど isucon@isucon6-qualifier:/etc/mysql$ systemctl status mysql ● mysql.service - MySQL Community Server Loaded: loaded (/lib/systemd/system/mysql.service; enabled; vendor preset: en Active: active (running) since Sun 2016-09-18 14:35:02 JST; 10min ago Process: 19854 ExecStartPost=/usr/share/mysql/mysql-systemd-start post (code=e Process: 19849 ExecStartPre=/usr/share/mysql/mysql-systemd-start pre (code=exi Main PID: 19853 (mysqld) Tasks: 30 Memory: 191.8M CPU: 1.301s CGroup: /system.slice/mysql.service mq19853 /usr/sbin/mysqld あ、これは戻したとき?
yoshimura [14:45] 10分前かw たぶんそうすねw さっきstopで実行したのでw おそらくmy.cnfを戻したときかとw
akimoto [14:48] 今はどういう状況なんでしたっけw
yoshimura [14:49] mysql を落とそうとしている状況ですw
tamura [14:49] ww

tamuraはちょっと寝てたようでここで意識が戻りましたw

tamura [14:49]
あれ?落ちてないスカ?ww
yoshimura [14:49] いまおちたかもですw
akimoto [14:49] お おちてる 時間かかるなww
yoshimura [14:50] root@isucon6-qualifier:/etc/mysql# ps -ef | grep mysql root 10421 10392 0 13:21 pts/4 00:00:00 tail -f /var/log/mysql/error.log mysql 19853 1 0 14:35 ? 00:00:01 /usr/sbin/mysqld root 20126 2360 0 14:46 pts/1 00:00:00 tail -f /var/log/mysql/error.log root 20128 10482 0 14:46 pts/5 00:00:00 grep --color=auto mysql root@isucon6-qualifier:/etc/mysql# kill 19853 root@isucon6-qualifier:/etc/mysql# ps -ef | grep mysql root 10421 10392 0 13:21 pts/4 00:00:00 tail -f /var/log/mysql/error.log root 20146 10482 0 14:47 pts/5 00:00:00 grep --color=auto mysql プロセスをkill したらいまになりました
akimoto [14:50] うは
yoshimura [14:51] そしてstart /usr/sbin/mysqld start したんどすが、どすが、
akimoto [14:52] my.cnfなおしました?
tamura [14:52] service mysql restart でokす
akimoto [14:52] systemctl restart mysqlでも
yoshimura [14:53] my.cnfはとりあえず最初のままにして一度あげようとおもいあすw 一度、ちゃんと動かせる手順を確立したいのでww
akimoto [14:53] www
yoshimura [14:53] service mysql restart
akimoto [14:54] うごいてるみたいですね。
yoshimura [14:54] おk ではこんどこそ少々おまちをw 本来やりたかったクエリキャッシュやります
yoshimura [14:57] ようやくktkr mysql> show variables like 'query_cache%'; +------------------------------+---------+ | Variable_name | Value | +------------------------------+---------+ | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 1048576 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | +------------------------------+---------+ 5 rows in set (0.01 sec) これでベンチさせましょうw
tamura [14:58] なんか寒いここ
yoshimura [14:58] げきさむなんすよw
akimoto [14:59] ベンチ行きますか! ちなみに今は↓ 自チームの最新結果 Status PASS Score 1520 Best 1546 Messages リクエストがタイムアウトしました (POST /keyword) リクエストがタイムアウトしました (POST /login) リクエストがタイムアウトしました (POST /stars) Time 2016-09-18 13:24:14 +0900 JST

やっと去年の状況に追いついた感じがwww

15:00 (残り3時間)

yoshimura [15:03]
1回目
自チームの最新結果
Status    PASS
Score    1430
Best    1546
Messages    
リクエストがタイムアウトしました (POST /keyword)
リクエストがタイムアウトしました (POST /login)
リクエストがタイムアウトしました (POST /stars)
Time    2016-09-18 15:02:05 +0900 JST
yoshimura [15:03] もう一度いきます。次はキャッシュが使用されるはず
yoshimura [15:04] 自チームの最新結果 Status PASS Score 678 Best 1546 Messages リクエストがタイムアウトしました (POST /keyword) リクエストがタイムアウトしました (POST /login) リクエストがタイムアウトしました (POST /stars) Time 2016-09-18 15:04:00 +0900 JST
yoshimura [15:05] おうふw
akimoto [15:05] wwwwwwww

たぶんタイムアウトでスコアが下がったものと思われます。 この時点までアプリ側をまだ見ていません。

yoshimura [15:06]
スロークエリのいまの設定
mysql> show variables where variable_name like ('slow%') or variable_name in ('long_query_time','log_queries_not_using_indexes');
+-------------------------------+-------------------------------------------+
| Variable_name                 | Value                                     |
+-------------------------------+-------------------------------------------+
| log_queries_not_using_indexes | OFF                                       |
| long_query_time               | 10.000000                                 |
| slow_launch_time              | 2                                         |
| slow_query_log                | OFF                                       |
| slow_query_log_file           | /var/lib/mysql/isucon6-qualifier-slow.log |
+-------------------------------+-------------------------------------------+
5 rows in set (0.00 sec)
yoshimura [15:08] スロークエリをONにして、クエリ時間が1秒以上のやつを出力させてみます! mysql> set global slow_query_log=1; Query OK, 0 rows affected (0.01 sec) mysql> set global long_query_time = 1; Query OK, 0 rows affected (0.00 sec) mysql> show variables where variable_name like ('slow%') or variable_name in ('long_query_time','log_queries_not_using_indexes'); +-------------------------------+-------------------------------------------+ | Variable_name | Value | +-------------------------------+-------------------------------------------+ | log_queries_not_using_indexes | OFF | | long_query_time | 10.000000 | | slow_launch_time | 2 | | slow_query_log | ON | | slow_query_log_file | /var/lib/mysql/isucon6-qualifier-slow.log | +-------------------------------+-------------------------------------------+ 5 rows in set (0.00 sec)
yoshimura [15:09] 一度ベンチします
yoshimura [15:12] 自チームの最新結果 Status PASS Score 0 Best 1546 Messages リクエストがタイムアウトしました (POST /keyword) リクエストがタイムアウトしました (POST /login) リクエストがタイムアウトしました (POST /stars) Time 2016-09-18 15:11:08 +0900 JST
yoshimura [15:12] おうふ
tamura [15:12] www
akimoto [15:13] どうしてこうなったwww
yoshimura [15:14] queryタイム1秒以上ってしたから負荷かかったのかなw? いちど10秒でやりますw

アプリ側でせめてタイムアウトしないようにしておかないとスコアが伸びません。

そして寒さとの戦い。

yoshimura [15:14]
さみー
tamura [15:15] 受付で毛布もらえますwww
yoshimura [15:15] まじすか!ちょっともらってきますw
tamura [15:18] ww

スロークエリとの戦い。

yoshimura [15:20]
すろークエリの監視時間10秒にしたらこれでした
自チームの最新結果
Status    PASS
Score    798
Best    1546
Messages    
リクエストがタイムアウトしました (POST /keyword)
リクエストがタイムアウトしました (POST /login)
リクエストがタイムアウトしました (POST /stars)
Time    2016-09-18 15:15:55 +0900 JST
yoshimura [15:20] で、クエリログには当然なにもはかれてないww
tamura [15:21] ぉぅふw 2秒でokす
akimoto [15:21] なぜ遅くなってしもうたんや
tamura [15:22] えっさーえっさー
yoshimura [15:26] Status PASS Score 1055 Best 1546 Messages starがついていません (GET /) リクエストがタイムアウトしました (POST /keyword) リクエストがタイムアウトしました (POST /login) リクエストがタイムアウトしました (POST /stars) Time 2016-09-18 15:24:11 +0900 JST
yoshimura [15:26] starがついていません (GET /) これなんすかねw いままでなかったとおもうとですが・・・w
tamura [15:27] ww

そして意味不明なスコアが。 たぶんリクエストがいい感じにきて、タイムアウトの回数が少なかった可能性があります。

yoshimura [15:27]
あれw?

いま、たむさん何か変更してますw?
yoshimura [15:27] 自チームの最新結果 Status PASS Score 2386 Best 2386 Messages リクエストがタイムアウトしました (POST /keyword) リクエストがタイムアウトしました (POST /stars) Time 2016-09-18 15:26:55 +0900 JST
yoshimura [15:27] 急にあがったw
tamura [15:27] いやしてないすww
akimoto [15:27] イミフ
yoshimura [15:27] キャッシュがきいてきたんでしょうかw
akimoto [15:28] わけわからないですねw
tamura [15:30] www

16:00 (残り2時間)

寒さとの戦いは続きます。

tamura [16:15]
よしむらさん、頭に何乗っけているんですか?www
yoshimura [16:15] 自分でみていまきづきましたw ※毛布を屋根みたいにしてエアコンの風の直撃を避けていたようです
tamura [16:16] おちゃ あったかいtea
tamura [16:21] アイスクリーム持ってきました 糞寒いのに
yoshimura [16:22] ww さっきあったかいおちゃでしたやんW
akimoto [16:22] あったかいteaは?w
tamura [16:22] coffee
akimoto [16:22] ばっちりっすねwww

SQLを中心に対策していきます。 PHPよく知らないので。

tamura [16:23]
キャッシュどうすか?
yoshimura [16:24] まだどす・・w キャッシュをみるといいつつスローログをmitemasitaww
tamura [16:24] あきもっちゃん、アプリ側のSQLで直せそうなところありますか?
yoshimura [16:24] これほんとかな〜とおもってw 1秒以上のクエリがないすw
tamura [16:24] ぉぅふw さすがに1秒超えるのはないスカ
yoshimura [16:25] ちょっぼ分析中なのですが、正しく分析できているかがあやしいのでもう一度ログとって再分析しますw
akimoto [16:25] あーSQLあんまりみてなかったですね。ちょっちみてみます

寒さ+トイレとの戦い。

tamura [16:28]
ちべたい

寒いのと熱いのがくると口の中がカオス
yoshimura [16:30] やっぱここだけ異様に寒いすよw
tamura [16:30] 受付は暑いんすww
yoshimura [16:30] ww 温度さはげしいw
tamura [16:30] あとトイレで水があふれてましたw
yoshimura [16:30] あふれるってwやばくないすかw
akimoto [16:31] びちゃびちゃでしたね
tamura [16:31] 節子〜 http://stamp.bokete.jp/36583951.png

やっとSQLに入ります。

akimoto [16:33]
SELECT * FROM entry ORDER BY CHARACTER_LENGTH(keyword) DESC
akimoto [16:34] SELECT name FROM user WHERE id = ?
akimoto [16:34] DELETE FROM entry WHERE id > 7101
akimoto [16:34] 'SELECT * FROM entry '. 'ORDER BY updated_at DESC '. "LIMIT $PER_PAGE ". "OFFSET $offset"
akimoto [16:35] 'INSERT INTO entry (author_id, keyword, description, created_at, updated_at)' .' VALUES (?, ?, ?, NOW(), NOW())' .' ON DUPLICATE KEY UPDATE' .' author_id = ?, keyword = ?, description = ?, updated_at = NOW()'

akimoto [16:36] なんとなく使っていそうなSQLを羅列してみましたが・・・ よくわかんないっす
yoshimura [16:37] SELECT * FROM entry ORDER BY CHARACTER_LENGTH(keyword) DESC
yoshimura [16:38] これとかって全項目使うんかね?もし使わなければカラム指定にするとよさそうだけど・・
akimoto [16:41] つかうのはkeywordとdescriptionだけみたいっすね
yoshimura [16:41] おぉw! いいすね!
tamura [16:41] なるり insert時に サイズをどっかにぶち込んでおけばいいんすよ で、それをindexにすればokす 寒い・・・ あきもっちゃん alterっすよ 寒い
akimoto [16:42] orderbyのやつですね
yoshimura [16:43] mysql> show index from entry; +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | Table | Non_unique | Key_name | Seq_in_index | Column_name | Collation | Cardinality | Sub_part | Packed | Null | Index_type | Comment | Index_comment | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ | entry | 0 | PRIMARY | 1 | id | A | 5163 | NULL | NULL | | BTREE | | | | entry | 0 | keyword | 1 | keyword | A | 5163 | NULL | NULL | YES | BTREE | | | +-------+------------+----------+--------------+-------------+-----------+-------------+----------+--------+------+------------+---------+---------------+ 2 rows in set (0.00 sec)
yoshimura [16:43] keywordカラムはindexあるるね

SQL単体ならいけるんですが、アプリと組み合わせるとちゃんとソースを読まないといけないのがちょっと面倒ですね・・・。

17:00 (残り1時間)

Javaならいけたんですよ。。。

tamura [16:58]
memcachedってどうやって使うんすかね?www
akimoto [16:59] e?
akimoto [17:00] phpから?
tamura [17:00] ww
yoshimura [17:02] ww 前回もでてきたやつww
tamura [17:03] 傾向と対策はばっちりっす!
tamura [17:03] Javaなら・・・w

何回目かのベンチ

yoshimura [17:14]
自チームの最新結果
Status    PASS
Score    702
Best    2386
Messages    
keyword: "東舞鶴公園野球場" に "東舞鶴公園野球場" へのリンクがありません (GET /keyword/東舞鶴公園野球場)
starがついていません (GET /)
リクエストがタイムアウトしました (POST /keyword)
リクエストがタイムアウトしました (POST /login)
リクエストがタイムアウトしました (POST /stars)
Time    2016-09-18 17:12:29 +0900 JST

下がりまくりです。

yoshimura [17:14]
スコアが落ちたのはぼくのせいかもw

キャッシュサイズ変更したんどすが
yoshimura [17:15] mysql> SHOW GLOBAL VARIABLES like 'Q%'; +------------------------------+---------+ | Variable_name | Value | +------------------------------+---------+ | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 1048576 | | query_cache_type | ON | | query_cache_wlock_invalidate | OFF | | query_prealloc_size | 8192 | +------------------------------+---------+ からの〜
yoshimura [17:15] mysql> SHOW GLOBAL VARIABLES like 'Q%'; +------------------------------+------------+ | Variable_name | Value | +------------------------------+------------+ | query_alloc_block_size | 8192 | | query_cache_limit | 1048576 | | query_cache_min_res_unit | 4096 | | query_cache_size | 3221225472 |
yoshimura [17:15] 1Mからの〜3G
tamura [17:16] w キャッシュでかww
yoshimura [17:16] root@isucon6-qualifier:/home/isucon# free -m total used free shared buff/cache available Mem: 6967 1448 4712 17 805 5218 avilable 5Gくらいあたのでww といってもこれアプリ動いてるときは、もっとリソース減ってるかw ちょっとここは、1Gくらいにしてみますw

あまりキャッシュを大きくするとこんどは探すのに手間がかかるというw

akimoto [17:22]
リンクがありませんはなんなんですかね
yoshimura [17:22] keyword: "697年" に "7年" へのリンクがありません
yoshimura [17:22] 説明しよう
yoshimura [17:23] 誰かがタイムマシーンで697年にいこうとして失敗してます
akimoto [17:23] www
tamura [17:28] w

酔いが回ってきています。

yoshimura [17:31]
キャシュ使用率 20%.....w
mysql> SELECT 
   ->   (SELECT VARIABLE_VALUE 
   ->   FROM 
   ->      INFORMATION_SCHEMA.GLOBAL_STATUS 
   -> WHERE 
   ->   VARIABLE_NAME = 'QCACHE_HITS')/(SELECT SUM(VARIABLE_VALUE) 
   -> FROM 
   ->   INFORMATION_SCHEMA.GLOBAL_STATUS 
   -> WHERE 
   ->   VARIABLE_NAME IN ('QCACHE_HITS','QCACHE_INSERTS','QCACHE_NOT_CACHED'))*100 AS CACHE_HIT_RATE;
+-------------------+
| CACHE_HIT_RATE    |
+-------------------+
| 21.39289678135405 |
+-------------------+
1 row in set, 2 warnings (0.01 sec)

ここでやっとどんなWebアプリなのかソースとデータを見始めます(遅い)

tamura [17:43]
== 他の紀年法 ==
* 干支 : 己丑
* 日本
** 持統天皇3年
** 皇紀1349年
* 中国
** 唐 : 永昌元年、載初元年
* 朝鮮 :
* ベトナム :
* 仏滅紀元 :
* ユダヤ暦 :

== できごと ==
*1月26日(持統天皇3年1月1日) - 人民を大極殿に朝賀させる
*3月9日(持統天皇3年2月13日) - 防人を任期制・交代制とする

== 誕生 ==
* 行会、奈良時代の僧 (+ 没年未詳)
* 孟浩然、唐の詩人 (+ 740年)
* 良弁、奈良時代の華厳宗の僧、東大寺の開山 (+ 774年)

== 死去 ==
*5月7日(持統天皇3年4月13日) - 草壁皇子、飛鳥時代の皇太子(* 662年)
* 黒歯常之、百済、唐の将軍 (* 生年未詳)
* 李元名、唐の皇族 (* 生年未詳)
* 李慎、唐の皇族 (* 生年未詳)
* 盧照鄰、唐の詩人 (* 637年?)
* キャドワラ、七王国時代ウェセックスの王(659年-)

*
tamura [17:52] 今更ながらwww public function htmlify($content) { if (!isset($content)) { return ''; } $keywords = $this->dbh->select_all( 'SELECT id, author_id, keyword, description, created_at, updated_at FROM entry ORDER BY keyword_length DESC' ); $kw2sha = []; // NOTE: avoid pcre limitation "regular expression is too large at offset" for ($i = 0; !empty($kwtmp = array_slice($keywords, 500 * $i, 500)); $i++) { $re = implode('|', array_map(function ($keyword) { return quotemeta($keyword['keyword']); }, $kwtmp)); preg_replace_callback("/($re)/", function ($m) use (&$kw2sha) { $kw = $m[1]; return $kw2sha[$kw] = "isuda_" . sha1($kw); }, $content); } $content = strtr($content, $kw2sha); $content = html_escape($content); foreach ($kw2sha as $kw => $hash) { $url = '/keyword/' . rawurlencode($kw); $link = sprintf('<a href="%s">%s</a>', $url, html_escape($kw)); $content = preg_replace("/{$hash}/", $link, $content); } return nl2br($content, true); } このメソッドをどうにかしたほうがよかったかもwww
akimoto [17:52] うっは

そして競技終了へ

tamura [17:57]
そろそろ締めの言葉をwww
yoshimura [17:57] www
yoshimura [17:57] http://serif.hatelabo.jp/images/cache/7f3d64697952de37aeb4867c90a7db1b62237a1c/cc84ea4e20b16820b1d57b228e681987be73f839.gif
akimoto [17:57] カレーうまかったです。 (100円にしては)
yoshimura [17:58] ちべたいポテト食べきれませんでした。

寒さとの戦いは競技が終わっても続きます。

tamura [18:00]
あ受付にレンジありますよ
yoshimura [18:01] レンジw? あぁw ポテトかw
tamura [18:01] つめたいポテトwww
yoshimura [18:01] てかここw 寒すぎなんすよw
yoshimura [18:01] 気持ち頭がいたいすw
yoshimura [18:01] むかしは、あたまがいたいというと、 それをいうならあたまがわるいだろ!おまえは!w
yoshimura [18:01] とつっこまれてましたw
tamura [18:02] 前回も寒くなかったですか?w
yoshimura [18:02] ay's qualifier has ended ベンチできなくなったw そりゃそうかw
tamura [18:03] a、 いつの間にか競技終了wwww
akimoto [18:03] 時間切れですね
yoshimura [18:03] 前回もでしたっけw 今日は風が直でくるんすよw たむさんの上にありますからwww
akimoto [18:03] vip 対応ですね
yoshimura [18:03] これがvip wwww 100円多く払ってるのにw 喜ぶのあけぼのだけだろw

20:00 (2時間後)

信州炉端 串の蔵 新宿三丁目店
http://r.gnavi.co.jp/j63c32w70000/

で鍋をいただきました。

寒さが回復しなかったので酒は飲めませんでした・・・・。


反省会をしていると、嫁さんからLINEが

comment

 今日は予選です・・・・。

まとめ

  • Appear.inで顔を映しながらやるのはお勧めです
  • だけどホントは会議室などでやるのがいいんでしょうね
  • 寒さ対策はしていったほうがいいです
  • Go言語がんばろう・・・・
  • gitで管理しておけばdiffくらいはすぐ取れたな~