公式見ながら設定したりしたが、挙動は確認できたけどいまいち自信なし
一応Javaから叩いている
ex)JavaでVarnish用のHttpMethod BANを発行してみる
localhost以外からcallしたいときは、acl purgeメソッドのところにIPなりhostなりを追加すればよい
以下vcl
backend default {
.host = "example.com";
.port = "80";
}
acl purge {
"localhost";
}
sub vcl_recv {
if (req.request == "BAN") {
if (!client.ip ~ purge) {
error 405 "Not allowed.";
}
ban("obj.http.x-url ~ " + req.url);
error 200 "Banned.";
}
}
sub vcl_fetch {
set beresp.http.x-url = req.url;
}
2015年4月7日火曜日
CommonsDBCPでminIdle以下のコネクション数になっちゃう時はtimeBetweenEvictionRunsMillis設定しよう
タイトルまま。
ex) そもそものCommonsDBCPの設定の話はこのへんでもみてね
http://www.atmarkit.co.jp/ait/articles/0709/25/news149_3.html
netstatをみたときに、Tomcatのコネクションプーリングのコネクション数が、minIdle以下になってることがあって。
例えばminIdle 5にしたときに、netstat叩いたとして、
$ netstat -an |grep "DBのIPアドレス":3306|grep ESTABLISHED |wc -l
が
1
みたいな。
で、どうもアイドル状態のコネクションは、検証し続けないとminIdle以下になっちゃうらしいんですね。アクセスが多くなるとmaxIdleまでは増えてくれるんだけど、コネクション生成コストもばかにならないので、minIdle数ぐらいは、常に貼っておいてほしいと。
そんなときは、timeBetweenEvictionRunsMillisを明示的に設定すればよくて(デフォルト値は-1なのでなんもしてない)、これを設定すると、idle中の検証をしてくれるので、minIdle以下のコネクションになることがなくなった(^○^)
手元の環境では、60000(ミリ秒)と設定している。
おわり
追記1
timeBetweenEvictionRunsMillisを明示的に設定したら、もう1ついいことがあった。
ピーク帯にコネクション数が、DBCPで設定してある、maxIdleぐらいまで達するんだけど、そのあと、負荷が下がっても、コネクション数が、mysqlのwait_timeout(デフォルト8時間)ぐらい維持されてたんだよね。
timeBetweenEvictionRunsMillisを設定したら、上記の8時間ぐらい増えた分が維持されていたコネクションが、すみやかに使わなくなったらcloseするようになった。
良いことでした。
٩(๑❛ᴗ❛๑)۶
追記2
http://www.atmarkit.co.jp/ait/articles/0709/25/news149_3.html
これみたら
って書いてたんだけど、このへんのソースみた感じ
http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
特にvalidationQueryにtimeBetweenEvictionRunsMillisが依存してる感じはない(なんか見落としてたらごめん)。
ソース読みきれないので推測入るんだけど、アイドル接続の有効性を確認(クエリを投げての検証)は、validationQueryが必要っぽいんだけど、アイドル接続の生存期間を確認するだけなら、minEvictableIdleTimeMillisのデフォ値で見てくれているので今回は期待した挙動(追記1)になったんだと思う。
ex) そもそものCommonsDBCPの設定の話はこのへんでもみてね
http://www.atmarkit.co.jp/ait/articles/0709/25/news149_3.html
netstatをみたときに、Tomcatのコネクションプーリングのコネクション数が、minIdle以下になってることがあって。
例えばminIdle 5にしたときに、netstat叩いたとして、
$ netstat -an |grep "DBのIPアドレス":3306|grep ESTABLISHED |wc -l
が
1
みたいな。
で、どうもアイドル状態のコネクションは、検証し続けないとminIdle以下になっちゃうらしいんですね。アクセスが多くなるとmaxIdleまでは増えてくれるんだけど、コネクション生成コストもばかにならないので、minIdle数ぐらいは、常に貼っておいてほしいと。
そんなときは、timeBetweenEvictionRunsMillisを明示的に設定すればよくて(デフォルト値は-1なのでなんもしてない)、これを設定すると、idle中の検証をしてくれるので、minIdle以下のコネクションになることがなくなった(^○^)
手元の環境では、60000(ミリ秒)と設定している。
おわり
追記1
timeBetweenEvictionRunsMillisを明示的に設定したら、もう1ついいことがあった。
ピーク帯にコネクション数が、DBCPで設定してある、maxIdleぐらいまで達するんだけど、そのあと、負荷が下がっても、コネクション数が、mysqlのwait_timeout(デフォルト8時間)ぐらい維持されてたんだよね。
timeBetweenEvictionRunsMillisを設定したら、上記の8時間ぐらい増えた分が維持されていたコネクションが、すみやかに使わなくなったらcloseするようになった。
良いことでした。
٩(๑❛ᴗ❛๑)۶
追記2
http://www.atmarkit.co.jp/ait/articles/0709/25/news149_3.html
これみたら
testWhileIdle以降はプール内でアイドル状態のコネクションを検証するかどうかのパラメータだ。この機能を使用するときには、validationQueryパラメータが設定されている必要がある。
って書いてたんだけど、このへんのソースみた感じ
http://svn.apache.org/viewvc/commons/proper/dbcp/trunk/src/main/java/org/apache/commons/dbcp2/BasicDataSource.java
特にvalidationQueryにtimeBetweenEvictionRunsMillisが依存してる感じはない(なんか見落としてたらごめん)。
ソース読みきれないので推測入るんだけど、アイドル接続の有効性を確認(クエリを投げての検証)は、validationQueryが必要っぽいんだけど、アイドル接続の生存期間を確認するだけなら、minEvictableIdleTimeMillisのデフォ値で見てくれているので今回は期待した挙動(追記1)になったんだと思う。
2015年2月27日金曜日
コマンドでOphcrack(Windows7対象)
基本的にWindowsは使ってないんだけど、身内がWindows7でパスワード忘れたわーわーってなってたので、久しぶりにOphcrackでパスワードリセットしたのでメモ。
なんか、LiveCDのisoをusbメモリに書き込んでbootさせたんだけど、なんかXがうまく立ち上がってくれなかったので、コマンドラインで実行してみた。
対象環境
Windows 7
流れ
1. ここ(http://ophcrack.sourceforge.net/download.php?type=livecd)から
「ophcrack-vista-livecd-3.6.0.iso」をダウンロード
2. ここ(http://ophcrack.sourceforge.net/tables.php)から「Vista free」をダウンロード
3. 1をbootableな形式でusbメモリに書き込む。2もusbメモリに書き込む(別のusbメモリにするか、別パーティションにするとよい)
4. 3で作ったusbメモリで作業対象のPCをboot(BIOSでboot順序を変えておく)
5. Xが起動せずにシェルが起動した場合はsuしてrootになっておく(公式サイトによれば、suのpasswordは"root")
6. 2のvista freeのテーブルディレクトリをマウントしておく
例)# mount /dev/sdb2s2 /mnt
7. こんなコマンドを実行。おしまい
例)# ophcrack -g -t /mnt/table -w /media/sda3/Windows/System32/config
オプションの意味
-g : GUIを起動しない
-t : テーブルファイルの置き場を指定。今回は6でマウントした場所になっている
-w:windowsのCドライブをマウントしているところを指定して、System32のconfigを指定
まぁ、tableファイルいろいろあるけど、そんな長くないパスワードだったらVista Freeのテーブルだけで、5分ぐらいでいけると思う
( ´ー`)フゥー...
なんか、LiveCDのisoをusbメモリに書き込んでbootさせたんだけど、なんかXがうまく立ち上がってくれなかったので、コマンドラインで実行してみた。
対象環境
Windows 7
流れ
1. ここ(http://ophcrack.sourceforge.net/download.php?type=livecd)から
「ophcrack-vista-livecd-3.6.0.iso」をダウンロード
2. ここ(http://ophcrack.sourceforge.net/tables.php)から「Vista free」をダウンロード
3. 1をbootableな形式でusbメモリに書き込む。2もusbメモリに書き込む(別のusbメモリにするか、別パーティションにするとよい)
4. 3で作ったusbメモリで作業対象のPCをboot(BIOSでboot順序を変えておく)
5. Xが起動せずにシェルが起動した場合はsuしてrootになっておく(公式サイトによれば、suのpasswordは"root")
6. 2のvista freeのテーブルディレクトリをマウントしておく
例)# mount /dev/sdb2s2 /mnt
7. こんなコマンドを実行。おしまい
例)# ophcrack -g -t /mnt/table -w /media/sda3/Windows/System32/config
オプションの意味
-g : GUIを起動しない
-t : テーブルファイルの置き場を指定。今回は6でマウントした場所になっている
-w:windowsのCドライブをマウントしているところを指定して、System32のconfigを指定
まぁ、tableファイルいろいろあるけど、そんな長くないパスワードだったらVista Freeのテーブルだけで、5分ぐらいでいけると思う
( ´ー`)フゥー...
2015年2月24日火曜日
Rのチートシート
RとRubyによるデータ解析入門
http://www.amazon.co.jp/dp/4873116155
2章を参考に。
環境周り
Rの導入(macportsで)
sudo port install R
ファイルをコマンドラインから実行
R --vanilla --slave < hoge.R
--vanilla : Rがこれまでに保存していたオブジェクトを読み込まない
--slave : 標準出力に表示を出さない
パッケージのインストール
install.packages('tree')
インストール済パッケージ一覧
installed.packages()
パッケージのアンインストール
remove.packages('hoge')
パッケージの使用
library(tree)
Rのシンタックス
コメント#
代入演算子
x <-1
or
1 -> x
or
mean(x = 1:10)
=はトップレベルでのみ使うことができて、関数内で使った場合はスコープが関数内になる。
x <- 1:10
とすると関数外でも使うことができる。
関数定義
my_function <- function(x,y) {
}
関数作成時に初期値を設定するには下記のようにする
my_function <- function(x,y=5) {
}
関数呼び出し
my_function(1,2)
引数に初期値がある場合は、すべての引数を指定しなくても良い
my_function(1)
条件文とループ
条件文の例
x <- 10
if (x > 20) {
print("x is greater than 20")
} else {
print(x is less than 20")
}
ループ3つ
repeat {}
breakないと止まらないお
while () {}
for ( x in 1:10) {}
データ構造
ベクトル(1次元配列)
// 結合関数cでつくる
> height <- c(1,2,3)
// :演算子でつくる
> 1:10
// seq関数でつくる
> seq(0,100,by=10)
// ベクトルの長さを取る
> length(height)
// ベクトルにアクセス
> length[1]
ベクトルのインデックスは0からではなく、1からはじまる
// 複数要素を取ることもできる
> length[2,3]
リスト
// key/value的な感じ
> peater <- list(name='Peter', age=30, glasses=TRUE)
// 参照は、位置もしくは、名前
> peater[1]
> peater['name']
// exact=FALSEにすると、名前の部分一致でもアリらしい
> petaer['na',exact=FALSE]
行例
> m <- matrix(1:20,nrow=5,ncol=4)
// デフォルトは列方向につくられるので、行方向につくりたいとき
> m <- matrix(1:20,nrow=5,ncol=4,byrow=TRUE)
アクセス
// 10番目、の意
m[10]
// 位置
m[3,4]
// 行列3~5行目,2~3列目
m[3:5,2:3]
配列
ベクトルを2次元以上へ拡張したもの。array()で作成する。
行列を複数つくる感じ
> a <- array(1:24,c(2,3,4))
ファクタ
値には、名義値、順序値、連続値がある。
名義値と順序値をつくりたいためのファクタ。
> colors <- c('green', 'red', 'blue')
> factor(colors)
[1] green red blue
Levels: blue green red
デフォルトではabc順。factor作成時に順序指定することもできる。
> factor(colors, order=TRUE, levels=colors)
データフレーム
名前のついた複数のベクトルからなるリスト
ちょい書きかけ...
2015年2月22日日曜日
MacOSXでの複数Java環境の管理
yosemiteにて
export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_25`
みたいなversion指定で切り替えられるんだけど、個人的には、
ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home /usr/local/java8
みたいにソフトリンクのほうが、
共存させててるときにわかりやすいなのでなんとなくそうしてる
インストールされているJava一覧
$ /usr/libexec/java_home -V Matching Java Virtual Machines (2): 1.8.0_25, x86_64: "Java SE 8" /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home 1.7.0_40, x86_64: "Java SE 7" /Library/Java/JavaVirtualMachines/jdk1.7.0_40.jdk/Contents/Home/Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
いまのJavaHome
$ /usr/libexec/java_home /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home
余談
JavaHomeの切り替えなんだけど、export JAVA_HOME=`/usr/libexec/java_home -v 1.8.0_25`
みたいなversion指定で切り替えられるんだけど、個人的には、
ln -s /Library/Java/JavaVirtualMachines/jdk1.8.0_25.jdk/Contents/Home /usr/local/java8
みたいにソフトリンクのほうが、
共存させててるときにわかりやすいなのでなんとなくそうしてる
2015年2月20日金曜日
MySQLでデッドロック検知したときに、とりあえず見るところ
お手本はこちら。
http://d.hatena.ne.jp/sh2/20090618
これはただの自分用のメモです。
5.5 later想定
デットロックが監視にひっかかったら!!
http://d.hatena.ne.jp/sh2/20090618
これはただの自分用のメモです。
5.5 later想定
デットロックが監視にひっかかったら!!
- 心を落ち着かせる
- show full process list;
- 今流れてるクエリを眺める
- show engine innodb status\G
- LATEST DETECTED DEADLOCKのあたりを見よう
- select * from information_schema.INNODB_TRX order by trx_id;
- limitとかwhereとか適当に効かせて
- ロックを引き起こしてる輩:information_schema.INNODB_LOCKSをみる
- ロックで待たされちゃってる輩:information_schema.INNODB_LOCK_WAITS
- ( ´ー`)フゥー...
2015年2月6日金曜日
2015年やること
1月中、いろんなことを調べたり、試したりしていて、今年やることを(今更)決めたので、残しておこうと思う。これはただのチラ裏。
いろいろ考えていたのは、今年というか、30代のテーマどうしようかなーと思っているのがあって、なかなかもやもやしていたのだった。
やることってか、学ぼうリストみたいな感じですね(言ったからにはやろうというか)
今年やること
英語
いい加減Google翻訳に頼る生活辞めたい。普通にTOEICの勉強しようと思う。
数学(統計)
ECサイトにいることもあって、手元にデータなんかいろいろあるので、いっちょセクシィなアウトプットを目指す。
Ruby
仕事は相変わらずJavaを書いてる気がするんだけど、趣味のものはなるべくRuby使おうかな、と。もう少し慣れたい。Rubyで仕事をしたいかというと特にそういうのもないんだけど。
関数型言語(Haskell ?)
最近、情報が多いのがHaskellなので、これかなー
今年やるかも?
Go
swiftはたぶんやらない
ほか、仕事で必要になった知識は別途是是非でやっていくということで。
人生上の大きなイベントが昨年から今年にかけて多いので、勉強の時間取るのをうまくやっていかないとね。
おしまい
登録:
投稿 (Atom)