ダメ

Redmineが止まっていた話

某日

いつも通り何も考えずubuntuを最新にする。

sudo apt-get update && sudo apt-get upgrade -y

何も考えず再起動する

sudo shutdown -r now

 

翌日

朝起きると, サーバのload averageとCPU使用率が高いという警告がmackerelから届いていた。

ログインしてtopとpsを叩くと、どうもruby (unicorn)がCPUを食いつぶしてるらしい。redmineのログを見てみると、無限に肥大化しており何が何だかわからない。死ぬほどログが垂れ流されているところをよくよくみると、

E, [2015-06-05T00:47:38.882239 #1267] ERROR — : Can’t connect to local MySQL server through socket ‘/var/run/mysqld/mysqld.sock’ (2) (Mysql2::Error)

と書いてある。

netstatとかpsとか叩いてみると、たしかにmysqlが起動していない……

今度はmysqlのログを見てみると、

150604 0:24:00 [ERROR] Can’t start server: Bind on TCP/IP port: Cannot assign requested address
150604 0:24:00 [ERROR] Do you already have another mysqld server running on port: 3306 ?
150604 0:24:00 [ERROR] Aborting

150604 0:24:00 InnoDB: Starting shutdown…
150604 0:24:01 InnoDB: Shutdown completed; log sequence number 2714169
150604 0:24:01 [Note] /usr/sbin/mysqld: Shutdown complete

当然だが他に3306ポートを使ってる人はいないし、意味不明である。my.cnfをみると、bind-address = 127.0.0.1 とある。

ふと思ってifconfigと叩くと、eth0しか出てこない…… 普段eth0とloが出てこなかったっけ?

まったく意味不明であるが、ifup loと叩くと、

ifup: interface lo already configured

とでる。が、ifconfig lo up としたら無事loがあがって、localhostへのpingも通るようになり、mysqlも起動し、unicornも起動した。loが消えた理由についてはまったくわかっていない。

# そもそもbindできないときにCPU食いつぶすのはどうかと思うが、、、

 

HP ProLiant MicroServer Gen8を買って地雷を順番に踏んでった話

NASにしてた自宅サーバが死んでしまったので、そのリプレースとしてタイトルの通り、Microserver Gen8を買った。HPのML310eを使ったときに割と調子がよかったので、同じでいいかなと。

HP MICROSERVER Gen8 G2020T 2.5GHz 2C

by ヒューレット・パッカード [Hewlett-Packard]
Rank/Rating: -/-
Price: ¥ 283,018

まずAmazonに出品していた「オフィス・モア (in 神戸)」という店に注文したところ、在庫が10点以上あったにも関わらず入荷未定と連絡がきた。「併売のため」とのことだが、更新が追いつかないペースでこのサーバが売れるとはとても思えないし、たいへん疑わしいと思っている。ということで、ぷらっとオンラインで再度注文。ここは以前も使ったことがあり、webに表示されてる通りに翌営業日に発送される(ただひとつ解せないのが、発送翌日、商品が届いた後になって発送の連絡をしてくるところ)。

ということで、無事届いた。

かっこいい

かっこいい

デザインはいいかんじである。

Continue reading

【訃報】低温調理器ことRaspberry Pi 2さん

出がけにヒーターのコンセントのところのスイッチ切っとくか、と思ってプチっと切ったのが実はRaspberry PiのACアダプタだったことに気付くまで、時間はそうかからなかった。

起動させようとするとkernel panicおこして0.5秒で止まる。たぶんまたRaspbian入れ直せば済むのだろうが、根本対策をしたいところだ。ストレージを外部電源のHDDにしたら少しはマシになるのだろうか。ちゃんとUPSにつないでおけばよかっただけという話もあるが。。。

さらに間が悪いことに、以前頼んでいたRaspberry Pi2用のケースが今日届いた。

起動しないRaspberry Piにケースをかぶせたところ

起動しないRaspberry Piにケースをかぶせたところ

ぴったりですね。けっこういい感じです。クソ。

ちなみに装着するためにはmicroSDを一旦抜く必要があります。

Raspberry Pi2/Pi3用ケースセット (Clear) -Physical Computing Lab

by - [TechShare]
Rank/Rating: 135560/-
Price: ¥ 14,928

電気代

東京電力管内においてこの1ヶ月間で16000円を超えた。

さすがにやばいと思ったので、ワットチェッカーで実測して回った。

https://docs.google.com/spreadsheets/d/1lOVcP0E4_BZhB0uzAIIcvdITEjU4491I4AEMqvnFpts/edit?usp=sharing

年末年始は引きこもりまくってたから暖房・PC代マシマシだっただろうしその他の家電いれたら納得の金額であった。つらい。

加湿器とサーバとPCを捨てるだけでだいぶ改善できそう。絶対しないけど。

あと再生可能エネルギー発電促進賦課金とかいうのに殺意が沸いた。

変数名に全角スペースは使えるのかという話

意外といろんな言語で日本語(というかUnicode全般)を変数名とかに使えるけど、全角スペースとか使えちゃうの?クールじゃね?配列の添え字に使ったらやばくね? という話をしていて、気になってぐぐったが見当たらなかったので試した。

#!/usr/bin/perl

use strict;
use warnings;

use utf8;

my $文字列 = 1;
my $  = 2;

print $文字列, "\n";
print $ , "\n";

$ perl 日本語.pl
Unrecognized character \x{3000}; marked by

チッつかえねえーな

package main

import "fmt"

func main() {
	var あああ = 1
	var   = 2
	fmt.Println(あああ)
	fmt.Println( )
}
$ go run utf8.go
# command-line-arguments
.\utf8.go:7: invalid identifier character U+3000
.\utf8.go:9: invalid identifier character U+3000

どっちも普通の変数名は使えるのに、スペースは使えないとのこと。いや安全でいいんだけど。

どういうことかと思って調べてみる。

The Go Programming Language Specification

以下引用:

In The Unicode Standard 6.3, Section 4.5 “General Category” defines a set of character categories. Go treats those characters in category Lu, Ll, Lt, Lm, or Lo as Unicode letters, and those in category Nd as Unicode digits.

引用おわり

Goの場合はUnicodeのGeneral categoryというプロパティに従って文字として使えるかが決まっており、Lu, Ll, Lt, Lm, LoならUnicode characterとして使えると。へぇ。たぶんPerlも同じようなことになってるんだろう。

Unicodeの規格書? http://www.unicode.org/versions/Unicode7.0.0/ の4.5 General Category を読むと意味がわかる。文字ごとにgeneral categoryというのがあって、それぞれの文字の使い道が示してあるとのこと。

そこで全角スペース(U+3000)を調べると、

http://unicode.org/cldr/utility/character.jsp?a=3000

と出てきて、Space Separator (Zs)であることがわかる。SeparatorなのでGoでは(そしておそらくだいたいの言語でも)変数名に使えないようになっているんですね。へぇ。ちなみに、Separatorとされているからといって言語上の区切り文字として使えるというわけでもないらしい。不憫である。

ちなみにすべてのUnicodeのプロパティ一覧は扱いやすい感じのテキストで提供されている。便利そうだけど可能なら死ぬまで使いたくないですね?

インドでプリペイドSIMを買う話

どうも2012年末くらいにルールが変わったらしく、インドでプリペイドSIMを買うのがめんどくさくなってしまった。

以前は空港のカウンターで3GSIMって連呼してればそれでよかったのに……

 

具体的にはテロ対策のため本人確認が強化されたため、Activateに最低半日かかるようになった。

デリーの空港の、タクシーの運ちゃんがたくさん待ってるエリアにAirtel(赤い)とAircel(白い)のカウンターがある。Aircelはクソで、プリペイドだと2G(古のEdge)しか使えない。お話にならないので、3GのいけるAirtelを使うべき。

なのだが、Airtelのカウンターにいったところ「1日以上使えるようになるまでかかる」と言われ、「30分で使えるようになるよ」と言っていたAircelのSIMを買うことにしてしまった。反省。冷静に考えれば、インド人の30分も半日も大差ない。

以下、あまりおすすめできないAircelのSIMを使えるようにするための手順(2013年11月現在)です

Continue reading

FX-8350を買った

タイトルままだが、学びの多い買い物だったので記録を残しておく。

 

・購入前の構成

M/B: M5A97 Pro

CPU: Phenom II X6 1090T

メモリ: ノーブランド4G*4枚

メインストレージ: Intel SSD 330 160GB

GPU: GeForce GTX 460

 

・購入の端緒

今日朝だらだらネットをしていたら、意外と安くなっていることを発見。

最近たまにもっさりしてるしなあと思い購入を決意。ここまで30分。

Continue reading