VPSという名前が流行りだす前からこの手の仮想化のサービスには興味があり色々借りちゃ解約を繰り返していたけどずっと使い続けているところがあります。
Linode!!
Parallels(最近影薄いよね)とかを使っていない所はコンパネとかが無かったりしょぼかったりする中、凄い出来のいいコンパネを準備していて、かつサーバもド安定の鉄板な会社です。
で、年単位で落としていなかった鯖をなんとなく惜しい気もしながら久々にシャットダウン。リプレースの為に中身を総入れ替えをしようとしていて気付く。
あれ?ディスク増えてる??
しかもよーくよーく見ると・・・「アップグレード出来るよ!」とか書いてあります。
半信半疑で押したら・・・メモリが倍になりました(^v^)
太っ腹だぜ!
さくらなんかは同じ値段でどんどんサービスが良くなるけど、こういうアップグレードパスは用意してくれなくて自分で別サービスを契約して手動で移動させないといけないんですよねぇ。
ああ、快適すぎる。他の会社も見習って欲しいゾ!
っと珍しく大絶賛で終わります。
2013年6月6日木曜日
2013年6月4日火曜日
CentOSにハマル
今回CentOSを使用した環境を構築していてハマったのでメモ
http://d.hatena.ne.jp/yoshi-ken/20120205
この辺を参考にすれば入れる事が出来ます。
http://toybox.hatenablog.jp/entry/2012/11/13/194710
とりあえずこの辺を参考に新しい物にしておきました。
んまー、これってrhodecode側の事情でgitは最新じゃないとどうのという事はないし(多分)、rhodecodeはrhodecodeで古いバージョンの場合のサポートは入れるべきだと思うしどちらかというとCentOSに非は無いんですけどね。
今回は人様のページのリンクを張ってオシマイ。
まぁ、個人的には枯れている環境を維持するのは悪い事では無いけど、最新の物と枯れている物の選択肢があるとやりやすいよなとか思います。管理大変なのは分かっているしそこら辺も含めてのディストリビューションの選択なんですケド個人的はやっぱりこの辺を踏まえるとDebian系の方が使いやすいかな。あっちは一応トレンドは押さえてる感じがするし。ここら辺はセンスだったり大人の事情だったりするんでしょうけどね。
1.nginxが無い
なんかいつの間にかメジャーになってしまったので今時無いとか・・・と思うケド、まぁちょっと前まではマイナーソフトだったしパッケージ化も遅れていたししょうがない?でも選択肢として初期状態でyumしても出てこないのは残念。まぁnginxの本家に対策方法が書かれていますが。http://d.hatena.ne.jp/yoshi-ken/20120205
この辺を参考にすれば入れる事が出来ます。
2.gitが古い
まぁ、これはコチラの事情でしかないんだけどrhodecodeを入れようとしてハマったので。なんかコミットできないと思ったらエラー吐いてて内容がオプションがどうのこうの。要は1.7.4以上じゃないとサポートしてないオプションを使っているので1.7.1が最新のCentOSではイマイチでしたという話。
http://toybox.hatenablog.jp/entry/2012/11/13/194710
とりあえずこの辺を参考に新しい物にしておきました。
んまー、これってrhodecode側の事情でgitは最新じゃないとどうのという事はないし(多分)、rhodecodeはrhodecodeで古いバージョンの場合のサポートは入れるべきだと思うしどちらかというとCentOSに非は無いんですけどね。
今回は人様のページのリンクを張ってオシマイ。
まぁ、個人的には枯れている環境を維持するのは悪い事では無いけど、最新の物と枯れている物の選択肢があるとやりやすいよなとか思います。管理大変なのは分かっているしそこら辺も含めてのディストリビューションの選択なんですケド個人的はやっぱりこの辺を踏まえるとDebian系の方が使いやすいかな。あっちは一応トレンドは押さえてる感じがするし。ここら辺はセンスだったり大人の事情だったりするんでしょうけどね。
2013年5月23日木曜日
githubクローン環境を試す
ちょっと開発体制を見直そうぜって事で流行りものを一通り試そうという事に。
まずはソース管理関連。githubみんな使ってるぜみたいな感じだけど何出来るのかサッパリわからんので触ってみたかったのですよ。
で本家は仕事に使うにはコストがかかるのと(実際は自前だと社員が動く分の管理コストかかるんだけどな)その他諸々の問題(単に組み込み関連の世界って古い考え方が残っているので人様のサーバに成果物を置くのはNG的な風潮がある。個人的にはクソクラエなんだけど世間体もあるので。)でクローンを試してみる事に。
どうでも良いけどgitにはcloneというコマンドがあるのでググると違う物いっぱい出てくるゼ。
ちょっと調べたら
まずこの辺りデスか。なんとなくその中のrhodecode、そしてその後にgitlabをまず試してみました。
結論からいくとどちらも何も入れていない素のサーバ(今回はdebian7を使用)に入れるという前提であれば何も考えずにインストールマニュアル通りにやったら動きました。
gitlabは最終段の機能チェックみたいなところで「sidekiq」とやらが動いていないとか起動スクリプトが古いとか怒られるんだけど確認するとどちらも問題無さそうなのでスルーでok。それ以外のハマりポイントは説明読みながらコピペ、もしくは適宜設定していれば問題無し。
パッと見の印象としてはgitlabの方がissue管理とかwikiとかコラボ用の機能があるので高機能っぽい。でもrhodecodeの方がインストール楽だしアカウント管理はLDAPとかに対応している分そういうので共通化したい場合は楽かも。という感じ。動作速度はあまり体感差は無いかな。
個人的にはrubyってパッケージを使っていたとしても依存関係の問題で環境構築でハマる事が経験上多くてアレルギーがあるので極力避けていたんですが、今回のgitlabはすんなり入ったものの(最近流行の仮想化環境での構築が功を奏してるんだと思います。まぁ、それでもruby自体はパッケージで入れるとおまけが多すぎるのでソースからビルドしたり色々周辺を整える必要があったので面倒なのには変わらないですが。あとこの仕組みが流行ってるのもみんな環境構築にハマってるからでしょうなぁ。)やっぱり手数が多くて構築、メンテナンスを考えるとpythonで動いているrhodecodeの方が分がある気がします。
ただ、もともとgithubとは何ぞや?何が便利?という疑問にはまだ回答を得られていません。少しさわってみただけでは正直現状はソースの中身や履歴がWebから簡単に見えるぜウヒョヒョーってな位の理解でしかないので何が便利なのか皆目見当もつかず。WindowsでGUIのクライアント使っているのと比べたアドバンテージって何?って感じです。
いや、多分git等分散型になった事によって履歴を追う事、マージをする事が複雑になったのでそれをアシストする為に中央にこういうサービスを置いて情報を集約していかないとやっていけないという話なんだろうなと思うんですけどね。でもなんかシックリ来ない。運用のイメージをもっと固める必要がありそうです。
というわけで、もうすこしいじってみる、本家やgitoriousみたいなサービス提供しているものをアカウント作ってさわってみるのも必要かなと思っているのでどれを使うか、どう使うかの結論はもう少し後回しデス。
またissue/bug trackingとかwiki/forumみたいなものと絡められるの?とかプロジェクトを回すための環境という意味ではそういう部分までセットで考えるべきかなと思っているのでそちらの方も見ていきたいトコロ。
そういえばログインを共通化するOpenIDとかって仕組みがあったと思うんだけど複数のサービスをシームレスにつなげられる仕組みって無いのかなぁ。LDAPとかでIDだけが共通になっていてもイチイチログインし直しとか、画面またぐの面倒とか色々想像出来てしまうんだけど・・・多くを望みすぎ?
まずはソース管理関連。githubみんな使ってるぜみたいな感じだけど何出来るのかサッパリわからんので触ってみたかったのですよ。
で本家は仕事に使うにはコストがかかるのと(実際は自前だと社員が動く分の管理コストかかるんだけどな)その他諸々の問題(単に組み込み関連の世界って古い考え方が残っているので人様のサーバに成果物を置くのはNG的な風潮がある。個人的にはクソクラエなんだけど世間体もあるので。)でクローンを試してみる事に。
どうでも良いけどgitにはcloneというコマンドがあるのでググると違う物いっぱい出てくるゼ。
ちょっと調べたら
- gitlab (http://gitlab.org/)
- gitorious (https://gitorious.org/)
- rhodecode (http://rhodecode.org/)
- bitbucket (https://bitbucket.org/)
まずこの辺りデスか。なんとなくその中のrhodecode、そしてその後にgitlabをまず試してみました。
結論からいくとどちらも何も入れていない素のサーバ(今回はdebian7を使用)に入れるという前提であれば何も考えずにインストールマニュアル通りにやったら動きました。
gitlabは最終段の機能チェックみたいなところで「sidekiq」とやらが動いていないとか起動スクリプトが古いとか怒られるんだけど確認するとどちらも問題無さそうなのでスルーでok。それ以外のハマりポイントは説明読みながらコピペ、もしくは適宜設定していれば問題無し。
パッと見の印象としてはgitlabの方がissue管理とかwikiとかコラボ用の機能があるので高機能っぽい。でもrhodecodeの方がインストール楽だしアカウント管理はLDAPとかに対応している分そういうので共通化したい場合は楽かも。という感じ。動作速度はあまり体感差は無いかな。
個人的にはrubyってパッケージを使っていたとしても依存関係の問題で環境構築でハマる事が経験上多くてアレルギーがあるので極力避けていたんですが、今回のgitlabはすんなり入ったものの(最近流行の仮想化環境での構築が功を奏してるんだと思います。まぁ、それでもruby自体はパッケージで入れるとおまけが多すぎるのでソースからビルドしたり色々周辺を整える必要があったので面倒なのには変わらないですが。あとこの仕組みが流行ってるのもみんな環境構築にハマってるからでしょうなぁ。)やっぱり手数が多くて構築、メンテナンスを考えるとpythonで動いているrhodecodeの方が分がある気がします。
ただ、もともとgithubとは何ぞや?何が便利?という疑問にはまだ回答を得られていません。少しさわってみただけでは正直現状はソースの中身や履歴がWebから簡単に見えるぜウヒョヒョーってな位の理解でしかないので何が便利なのか皆目見当もつかず。WindowsでGUIのクライアント使っているのと比べたアドバンテージって何?って感じです。
いや、多分git等分散型になった事によって履歴を追う事、マージをする事が複雑になったのでそれをアシストする為に中央にこういうサービスを置いて情報を集約していかないとやっていけないという話なんだろうなと思うんですけどね。でもなんかシックリ来ない。運用のイメージをもっと固める必要がありそうです。
というわけで、もうすこしいじってみる、本家やgitoriousみたいなサービス提供しているものをアカウント作ってさわってみるのも必要かなと思っているのでどれを使うか、どう使うかの結論はもう少し後回しデス。
またissue/bug trackingとかwiki/forumみたいなものと絡められるの?とかプロジェクトを回すための環境という意味ではそういう部分までセットで考えるべきかなと思っているのでそちらの方も見ていきたいトコロ。
そういえばログインを共通化するOpenIDとかって仕組みがあったと思うんだけど複数のサービスをシームレスにつなげられる仕組みって無いのかなぁ。LDAPとかでIDだけが共通になっていてもイチイチログインし直しとか、画面またぐの面倒とか色々想像出来てしまうんだけど・・・多くを望みすぎ?
2013年4月15日月曜日
IntelのNIC
ちょっとテスト用に簡単なサーバを構築という事で某ショップブランドの店でサーバー機ではなく普通のi7なデスクトップを一台購入。なんとなく2nd NICにIntelのPro/1000 GTを追加(つかオンボードが蟹だからメインになるんですが)
このGTが失敗でした・・・orz
今回の目的は「新しい技術を体感しよう」なので疑問ももたずにHyper-V Server 2012をインストール。最初の設定作業がホボCUIオンリーな世界に戸惑いつつ最初の仮想マシンとしてWindows Server 2012を入れました。
で、よく見たらIntelのNIC認識していないわけですよ。蟹は認識しているのに。
個人的な妄想では「Intelは最強。安定しているし、何も用意しなくても勝手に認識される。」と思っていましたが幻想だった様です。
何でかと言うと・・・
このボードWindows8対応してねぇぇぇぇ
Windows Server 2008 R2やWindows7までのドライバはあるんですよ・・・。でもWindows8はオフィシャルサイトにもダメと書いてありましたとさ。トホホ。PRO/1000系ってもう過去のモデルなんですねぇ。ネットで調べると大抵このボードが鉄板ってあるからそういうもんだと思っていました。(後に書く様に今回の環境じゃなければ問題無いんですけどね)
というわけでIntel Gigabit CT Desktop Adapterをとりあえず追加オーダーしましたよ・・・と。まぁ、実はショップブランドで構成決める時にこのボードあったんですが上の様な妄想があったので調べもせず、よくわからんけどCTよりGTの方が強そう(アホ)とかって適当に選んだのでした・・・反省orz
他にも重要なのは仮想マシン側のOSなんでベースをHyper-V Server 2008にするとか(ぶっちゃけショボイPCでは2012である必要性はほぼ無いので)、ベースをVMware ESXiにするとかってのも選択肢なんですがね。
まぁ・・・自腹じゃないし最新の環境を作るという事で・・・テヘッ
このGTが失敗でした・・・orz
今回の目的は「新しい技術を体感しよう」なので疑問ももたずにHyper-V Server 2012をインストール。最初の設定作業がホボCUIオンリーな世界に戸惑いつつ最初の仮想マシンとしてWindows Server 2012を入れました。
で、よく見たらIntelのNIC認識していないわけですよ。蟹は認識しているのに。
個人的な妄想では「Intelは最強。安定しているし、何も用意しなくても勝手に認識される。」と思っていましたが幻想だった様です。
何でかと言うと・・・
このボードWindows8対応してねぇぇぇぇ
Windows Server 2008 R2やWindows7までのドライバはあるんですよ・・・。でもWindows8はオフィシャルサイトにもダメと書いてありましたとさ。トホホ。PRO/1000系ってもう過去のモデルなんですねぇ。ネットで調べると大抵このボードが鉄板ってあるからそういうもんだと思っていました。(後に書く様に今回の環境じゃなければ問題無いんですけどね)
というわけでIntel Gigabit CT Desktop Adapterをとりあえず追加オーダーしましたよ・・・と。まぁ、実はショップブランドで構成決める時にこのボードあったんですが上の様な妄想があったので調べもせず、よくわからんけどCTよりGTの方が強そう(アホ)とかって適当に選んだのでした・・・反省orz
他にも重要なのは仮想マシン側のOSなんでベースをHyper-V Server 2008にするとか(ぶっちゃけショボイPCでは2012である必要性はほぼ無いので)、ベースをVMware ESXiにするとかってのも選択肢なんですがね。
まぁ・・・自腹じゃないし最新の環境を作るという事で・・・テヘッ
2013年3月11日月曜日
ターミナルのフォント
今までsshのターミナルにはTeraTermを使い続けてきましたが最近ふとしたところからputtyを使う様になりました。別にTTSSHに何か不満があったわけでもないんですけど、本当になんとなくです。(ふと昔一緒に仕事していた会社のIT管理をしていた人が熱狂的なputtyユーザーだったのを思い出しただけ)
っとこれは実は今回のエントリーの本題では無くて・・・本題はフォントの話デス。
そのputtyのフォント設定をなんとなくTerminalにしていたんですが、これが最近の安ノートPCの液晶(WXGA1366x768)であれば特に問題無かったのですが職場の24インチ1920x1200のモニタだと10ptでは小さすぎる、次のサイズの14ptではデカすぎるとイマイチ勝手が良くない。
というわけで代替えフォントを探す事にしました。少しググるとこんな記事が。
http://d.hatena.ne.jp/shibason/20100902/1283424768
ここに紹介されているInconsolataをためしに入れてみるとナカナカ良い感じに見える。ただし記事にも書かれている様に日本語のフォントは入っていないので日本語を含んだ表示をすると残念なことになります。(昔昔680x0系のMacにNetBSD + X-Windowを入れてなんとか日本語化したなんて時代を思い出す感じですな)
こんな感じ。かといってここに書かれているFontLinkを使用する方法はレジストリをいじるのでなんとなくやりたくない。(別に問題になる根拠はないんだけど)
じゃー、もともとソースが公開されているフォントだし自分でマージして1フォントとして用意されている方が楽だし後で別の環境で使う場合も気兼ねなく使えるじゃないという事でFontForge関連をパラパラ見ていたらやはり同じことを考えた人がいて作っている人がいました。
http://save.sys.t.u-tokyo.ac.jp/~yusa/fonts/rictydiminished.html
で、試しに入れてみたんですが
なんか同じデータのはずなのに素のInconsolataとは印象が違いますネ・・・。eとかの上部が欠けていたりしてなんとなく気持ち悪い。あと、なんとなく元の方が線が太かった気がするんですがboldを指定すると太すぎるしバランスが・・・。不思議なもんですな。
これだけではネタとしてアレなので無印Rictyさんを自前環境で作ってみる事にします。FontForgeのWindows版はなんか色々面倒臭そうな雰囲気だったので、丁度別用途の為に作ってあったUbuntu環境で生成してみます。基本ドキュメントに書いてある通りなのでここを見る必要はないハズです。
でサクッとFontForgeをインストール。
お次はフォントデータ及び変換スクリプトを入手しましょう。
リンクは今現在のリンクなんで変わってたら適当に読み替えてね。sourceforgeの方はURLを''でくくるのを忘れるとぷんぷんする事になりますよ。
圧縮されているものは展開してインストール。とりあえずUbuntuは全ユーザで使える様にフォントを入れるには/usr/local/share/fonts/にコピーすれば良いらしい。
そして変換開始。
しばしほっておくと「Ricty-Regular.ttf」と「Ricty-Bold.ttf 」等が出来上がっているのですがWindowsに入れてみると字間が凄い事になっています。 大分前に発覚している不具合らしいんですが未だに直ってないっぽいですね。というわけで
こちらのスクリプトを使用して変換してやりましょう。具体的にはOS/2バージョンとやらを4から1にするらしいのですが意味はサッパリわかりませんw FontForge上で手動でやってもOKの様です。
これで出来た物をWindows側にもってきたら終了です。
よくよく作者さんのページを読み直してみるとWindows環境では文字が小さい時に綺麗に表示されない(文字が欠ける)という事は書かれていましたね。というわけでついでにサイズを13pt(リストには13無いけど手入力で)にして色を上のサイトに書いてあるのを真似して調整してみました。
良い感じですな!しばらくはこれでいってみましょう。
しかしなんだ。もしかしてこれより小さい文字で使う場合はMigu 1Mを素のまま使った方が幸せだったりする!?ショボイ液晶のノートとかだとこのサイズデカすぎるしなぁ。
追伸
ついでと言ってはなんですがこのRictyのスクリプトを使用してTakaoゴシックとの混合版も作ってみました。
前に書いたautoの時は勝手にインストール済みのフォントから拾ってきたみたいですが、こちらの書き方はソースになる実フォントファイルのパス指定になる様です。適当に読み替えて下さい。一番最後の指定ってbold用のフォント指定らしいのですが最終的にインストールしないので適当です。
っとこれは実は今回のエントリーの本題では無くて・・・本題はフォントの話デス。
そのputtyのフォント設定をなんとなくTerminalにしていたんですが、これが最近の安ノートPCの液晶(WXGA1366x768)であれば特に問題無かったのですが職場の24インチ1920x1200のモニタだと10ptでは小さすぎる、次のサイズの14ptではデカすぎるとイマイチ勝手が良くない。
というわけで代替えフォントを探す事にしました。少しググるとこんな記事が。
http://d.hatena.ne.jp/shibason/20100902/1283424768
ここに紹介されているInconsolataをためしに入れてみるとナカナカ良い感じに見える。ただし記事にも書かれている様に日本語のフォントは入っていないので日本語を含んだ表示をすると残念なことになります。(昔昔680x0系のMacにNetBSD + X-Windowを入れてなんとか日本語化したなんて時代を思い出す感じですな)
こんな感じ。かといってここに書かれているFontLinkを使用する方法はレジストリをいじるのでなんとなくやりたくない。(別に問題になる根拠はないんだけど)
じゃー、もともとソースが公開されているフォントだし自分でマージして1フォントとして用意されている方が楽だし後で別の環境で使う場合も気兼ねなく使えるじゃないという事でFontForge関連をパラパラ見ていたらやはり同じことを考えた人がいて作っている人がいました。
http://save.sys.t.u-tokyo.ac.jp/~yusa/fonts/rictydiminished.html
で、試しに入れてみたんですが
なんか同じデータのはずなのに素のInconsolataとは印象が違いますネ・・・。eとかの上部が欠けていたりしてなんとなく気持ち悪い。あと、なんとなく元の方が線が太かった気がするんですがboldを指定すると太すぎるしバランスが・・・。不思議なもんですな。
これだけではネタとしてアレなので無印Rictyさんを自前環境で作ってみる事にします。FontForgeのWindows版はなんか色々面倒臭そうな雰囲気だったので、丁度別用途の為に作ってあったUbuntu環境で生成してみます。基本ドキュメントに書いてある通りなのでここを見る必要はないハズです。
$ sudo aptitude install fontforge
でサクッとFontForgeをインストール。
お次はフォントデータ及び変換スクリプトを入手しましょう。
$ wget http://www.levien.com/type/myfonts/Inconsolata.otf
$ wget 'http://sourceforge.jp/frs/redir.php?m=jaist&f=%2Fmix-mplus-ipa%2F57240%2Fmigu-1m-20121030.zip'
$ wget https://github.com/yascentur/Ricty/archive/3.2.1.zip
リンクは今現在のリンクなんで変わってたら適当に読み替えてね。sourceforgeの方はURLを''でくくるのを忘れるとぷんぷんする事になりますよ。
圧縮されているものは展開してインストール。とりあえずUbuntuは全ユーザで使える様にフォントを入れるには/usr/local/share/fonts/にコピーすれば良いらしい。
$ mv redir.php\?m\=jaist\&f\=%2Fmix-mplus-ipa%2F57240%2Fmigu-1m-20121030.zip migu-1m-20121030.zip
$ unzip migu-1m-20121030.zip
$ sudo cp migu-1m-20121030/migu-1m*.ttf /usr/local/share/fonts/
$ sudo cp Inconsolata.otf /usr/local/share/fonts/
$ unzip 3.2.1.zip
そして変換開始。
$ cd Ricty-3.2.1/
$ sh ricty_generator.sh auto
しばしほっておくと「Ricty-Regular.ttf」と「Ricty-Bold.ttf 」等が出来上がっているのですがWindowsに入れてみると字間が凄い事になっています。 大分前に発覚している不具合らしいんですが未だに直ってないっぽいですね。というわけで
$wget https://raw.github.com/yascentur/Ricty/3.2.1/misc/os2version_reviser.sh
こちらのスクリプトを使用して変換してやりましょう。具体的にはOS/2バージョンとやらを4から1にするらしいのですが意味はサッパリわかりませんw FontForge上で手動でやってもOKの様です。
$ sh os2version_reviser.sh Ricty-*.ttf RictyDiscord-*.ttf
これで出来た物をWindows側にもってきたら終了です。
よくよく作者さんのページを読み直してみるとWindows環境では文字が小さい時に綺麗に表示されない(文字が欠ける)という事は書かれていましたね。というわけでついでにサイズを13pt(リストには13無いけど手入力で)にして色を上のサイトに書いてあるのを真似して調整してみました。
良い感じですな!しばらくはこれでいってみましょう。
しかしなんだ。もしかしてこれより小さい文字で使う場合はMigu 1Mを素のまま使った方が幸せだったりする!?ショボイ液晶のノートとかだとこのサイズデカすぎるしなぁ。
追伸
ついでと言ってはなんですがこのRictyのスクリプトを使用してTakaoゴシックとの混合版も作ってみました。
$ ./ricty_generator.sh -n takao ../Inconsolata.otf ../takao-fonts-ttf-003.02.01/TakaoGothic.ttf ../takao-fonts-ttf-003.02.01/TakaoGothicS.ttf
$ sh os2version_reviser.sh Rictytakao-*.ttf RictytakaoDiscord-*.ttf
前に書いたautoの時は勝手にインストール済みのフォントから拾ってきたみたいですが、こちらの書き方はソースになる実フォントファイルのパス指定になる様です。適当に読み替えて下さい。一番最後の指定ってbold用のフォント指定らしいのですが最終的にインストールしないので適当です。
2013年2月19日火曜日
高負荷状態のルータの内情 その1
普段あまり使う機会が無いといえば無いし、一般的な用途には下火な印象もあるBitTorrentみたいなP2Pだけど、ああいう物でネットワーク的に負荷?をかけるとルータのレスポンスが著しく落ちるのは何故なのか前から興味があった。
昔のルータは少し負荷をかけるとそのまま逝っちゃってリセットしないと復旧しなかったりしたけど最近のはFONみたいな安い奴でも落ちずに粘るし、そういう意味でもメカニズムに興味が。
丁度?FONルータのファームを書き換えられる環境が整ったので(基盤からシリアルの足生やしてUSBシリアル変換アダプタ買ってきて繋いだだけだけど)カスタムファームを入れてtelnetでつないで状況をウォッチしてみる事に。
結果としては・・・softirqが99%とかになっておりここが問題っぽい。そしてdnsmasqタスクが結構な高負荷になっている事象は観測出来た。ただしdnsmasqは常に高負荷なわけでは無さそう。ソフトウェア割り込みでフン詰まっているのは間違いないんだろけど割り込み要因が問題。
softirqに関してはカスタムファームのKernelであるLinuxの仕組みという事で良いと思うんだけど、実際キャパやその処理能力を超える割り込みが入った場合の挙動は勉強不足でよく分からない。何かツールとかでその瞬間に入っている割り込み種別とかプライオリティとか確認する方法あるのかな?Linuxでの開発ってした事無いのでこちらも勉強しないとね。
ルータのファームってLinuxとは限らないと思うけど他のOSでも同じ事が起きるのだろうか?基本的にP2Pって同時に張られるセッション数が凄い数になっているんじゃないかと仕様も調べずに勝手に想像しているけど、単にそれが原因なのか、それともデバイスドライバの実装上の問題なのかはまず確認が必要かも。
いずれにせよサーバに負荷が集中して~ってパターンと同様の事象が起きているという認識であっているのかなぁ。だとしたらこの辺を勉強しておく事は仕事にもつながりそうだしちょっと調べてみますか。デバッグ手法に関してはAndroidの下回りとか開発するときにも生かせそうだしね。(無理やり紐づけてみる)
というわけで、その2につづく(はず)
昔のルータは少し負荷をかけるとそのまま逝っちゃってリセットしないと復旧しなかったりしたけど最近のはFONみたいな安い奴でも落ちずに粘るし、そういう意味でもメカニズムに興味が。
丁度?FONルータのファームを書き換えられる環境が整ったので(基盤からシリアルの足生やしてUSBシリアル変換アダプタ買ってきて繋いだだけだけど)カスタムファームを入れてtelnetでつないで状況をウォッチしてみる事に。
結果としては・・・softirqが99%とかになっておりここが問題っぽい。そしてdnsmasqタスクが結構な高負荷になっている事象は観測出来た。ただしdnsmasqは常に高負荷なわけでは無さそう。ソフトウェア割り込みでフン詰まっているのは間違いないんだろけど割り込み要因が問題。
softirqに関してはカスタムファームのKernelであるLinuxの仕組みという事で良いと思うんだけど、実際キャパやその処理能力を超える割り込みが入った場合の挙動は勉強不足でよく分からない。何かツールとかでその瞬間に入っている割り込み種別とかプライオリティとか確認する方法あるのかな?Linuxでの開発ってした事無いのでこちらも勉強しないとね。
ルータのファームってLinuxとは限らないと思うけど他のOSでも同じ事が起きるのだろうか?基本的にP2Pって同時に張られるセッション数が凄い数になっているんじゃないかと仕様も調べずに勝手に想像しているけど、単にそれが原因なのか、それともデバイスドライバの実装上の問題なのかはまず確認が必要かも。
いずれにせよサーバに負荷が集中して~ってパターンと同様の事象が起きているという認識であっているのかなぁ。だとしたらこの辺を勉強しておく事は仕事にもつながりそうだしちょっと調べてみますか。デバッグ手法に関してはAndroidの下回りとか開発するときにも生かせそうだしね。(無理やり紐づけてみる)
というわけで、その2につづく(はず)
2013年1月24日木曜日
sqlite.netのBOOLEAN型
sqlite.netを使ってプログラムを書いていてハマったのでメモメモ。
まず、sqlite自身にあまり細かい型が無い事は知ってました。そしてsqlite自身、それからsqlite.net側の処理として型が拡張されておりBOOLが使えるとの事なので試しにBOOL型(BOOLEAN型でもいけた)のところにTRUEを入れるSQLを書いてみる・・・入りました。 まぁ、文字列として入っているから当然なんですけど。で、、、C#で読み出してみると「false」が返ってきます。ヤッター!
なんでだろーっとソースコードを見てみると・・・テキストとして
「yes」「y」「1」「on」
がtrueとして
「no」「n」「0」「off」
がfalseとして処理されております・・・。
あれ?trueとかfalseは!?普通の感覚だとBOOLEANとか言われたらtrue/falseとかじゃないの!?
まぁ、その文字の判定の前に渡されたオブジェクトがbool型(C#的な)だったらboolとして処理するみたいな形になっているのでそれで満足してそれ以外の型で処理する様になっている様なのですが・・・そもそもsqliteにはbool型無いし、C言語(sqliteはCで書かれている)的にもbool無いしこの処理って意味あるのか!?
その前の処理までは追っていないのでそこで何やらやっている可能性もあるけど・・・まぁちゃんと値返ってきてないし無いわな。
ちょっと調べてみるとBoolean型自体はSQL的にはSQL:1999で定義されていてtrue/falseで処理出来る様です。なのでSQL的には間違った物ではないのですがsqlite3のドキュメントを読むと・・・「SQL92に一応準拠」との事。
まー、じゃあしょうがないよな・・・?
しょうがないよな!?
いや、やっぱりyes/noとか処理してるんだしsqlite.netでtrue/falseの判定すべきだろう。
まぁ世間一般的にSQLの世界としては規格化されていてもブッチしている実装はいっぱいあるわけで、BOOLEANもあまりサポートされていない存在らしいので深く考えずに数値型に0/1入れて処理しておくのが幸せになれる方法なんでしょうけどね。
まず、sqlite自身にあまり細かい型が無い事は知ってました。そしてsqlite自身、それからsqlite.net側の処理として型が拡張されておりBOOLが使えるとの事なので試しにBOOL型(BOOLEAN型でもいけた)のところにTRUEを入れるSQLを書いてみる・・・入りました。 まぁ、文字列として入っているから当然なんですけど。で、、、C#で読み出してみると「false」が返ってきます。ヤッター!
なんでだろーっとソースコードを見てみると・・・テキストとして
「yes」「y」「1」「on」
がtrueとして
「no」「n」「0」「off」
がfalseとして処理されております・・・。
あれ?trueとかfalseは!?普通の感覚だとBOOLEANとか言われたらtrue/falseとかじゃないの!?
まぁ、その文字の判定の前に渡されたオブジェクトがbool型(C#的な)だったらboolとして処理するみたいな形になっているのでそれで満足してそれ以外の型で処理する様になっている様なのですが・・・そもそもsqliteにはbool型無いし、C言語(sqliteはCで書かれている)的にもbool無いしこの処理って意味あるのか!?
その前の処理までは追っていないのでそこで何やらやっている可能性もあるけど・・・まぁちゃんと値返ってきてないし無いわな。
<閑話休題>
ちょっと調べてみるとBoolean型自体はSQL的にはSQL:1999で定義されていてtrue/falseで処理出来る様です。なのでSQL的には間違った物ではないのですがsqlite3のドキュメントを読むと・・・「SQL92に一応準拠」との事。
まー、じゃあしょうがないよな・・・?
しょうがないよな!?
いや、やっぱりyes/noとか処理してるんだしsqlite.netでtrue/falseの判定すべきだろう。
まぁ世間一般的にSQLの世界としては規格化されていてもブッチしている実装はいっぱいあるわけで、BOOLEANもあまりサポートされていない存在らしいので深く考えずに数値型に0/1入れて処理しておくのが幸せになれる方法なんでしょうけどね。
ラベル:
.NET,
C#,
database,
development
登録:
投稿 (Atom)