ホーム > タグ > mysql

mysql

yumでエラーが出た時の対処法 その2

前回のエントリーで、yumのエラーについて簡単に書いたが、もう少し詳細を記録する。

このblogは、DTIのServersMan@VPSというサービスの上で動作している。
メモリ256MB、ディスク10GBで490円/月額というびっくりな値段だ。
VPSというだけあって、root権限ももらえて、アプリも自由に入れられ、普通のホスティングサービスとは一線を画す。
CPUや、1サーバーあたりのユーザー数等は明記されていないが、今のところかなり快適だ。
だがしかし、256MBのメモリだけはいかんともしがたい。
このblog、WordPressを動かすために、apache、PHP、mysqlを動作させる必要があるが、
まず、yumでのインストール につまづいた。
yumを実行すると、以下のようなエラーが発生。

Loaded plugins: fastestmirror
Repository ‘vz-base’ is missing name in configuration, using id
Repository ‘vz-updates’ is missing name in configuration, using id
Determining fastest mirrors
Traceback (most recent call last):
File “/usr/bin/yum”, line 29, in ?
yummain.user_main(sys.argv[1:], exit_code=True)
File “/usr/share/yum-cli/yummain.py”, line 309, in user_main
errcode = main(args)
File “/usr/share/yum-cli/yummain.py”, line 178, in main
result, resultmsgs = base.doCommands()
File “/usr/share/yum-cli/cli.py”, line 349, in doCommands
return self.yum_cli_commands[self.basecmd].doCommand(self, self.basecmd, self.extcmds)
File “/usr/share/yum-cli/yumcommands.py”, line 626, in doCommand
return base.search(extcmds)
File “/usr/share/yum-cli/cli.py”, line 799, in search
for (po, keys, matched_value) in matching:
File “/usr/lib/python2.4/site-packages/yum/__init__.py”, line 1813, in searchGenerator
for sack in self.pkgSack.sacks.values():
File “/usr/lib/python2.4/site-packages/yum/__init__.py”, line 661, in
pkgSack = property(fget=lambda self: self._getSacks(),
File “/usr/lib/python2.4/site-packages/yum/__init__.py”, line 501, in _getSacks
self.repos.populateSack(which=repos)
File “/usr/lib/python2.4/site-packages/yum/repos.py”, line 232, in populateSack
self.doSetup()
File “/usr/lib/python2.4/site-packages/yum/repos.py”, line 79, in doSetup
self.ayum.plugins.run(‘postreposetup’)
File “/usr/lib/python2.4/site-packages/yum/plugins.py”, line 179, in run
func(conduitcls(self, self.base, conf, **kwargs))
File “/usr/lib/yum-plugins/fastestmirror.py”, line 181, in postreposetup_hook
all_urls = FastestMirror(all_urls).get_mirrorlist()
File “/usr/lib/yum-plugins/fastestmirror.py”, line 333, in get_mirrorlist
self._poll_mirrors()
File “/usr/lib/yum-plugins/fastestmirror.py”, line 376, in _poll_mirrors
pollThread.start()
File “/usr/lib/python2.4/threading.py”, line 416, in start
_start_new_thread(self.__bootstrap, ())
thread.error: can’t start new thread

このエラーは、どうもメモリ不足の時に起きるようだ。
そこで、メモリを確認すると以下。

Total: 262144k
Used: 142392k
Free: 119752k

現時点で、主に、
sshd, syslogd, xinetd, crond, mysqldが動作しているが、mysqldが136MBもメモリを使っている。
そこで、mysqldのメモリ節約設定を行う。
/etc/my.cnfを編集し、

skip-innodb

とし、再起動した。
すると、mysqldが47MBに激減。

Total: 262144k
Used: 53056k
Free: 209088k

これで、apacheやPHPも快適だ。
他にも、apacheの利用しないモジュールを外したりすることで、メモリを節約する設定とする。

yumでエラーが出た場合の対処法

VPS環境で、yum installやyum updateであまり見たことの無いようなエラーが大量に出た場合、メモリ不足を疑ってみる。

メモリ256MBで、主なサービスとして、apache、mysql、sendmailが動作している状態ではyumは起動時にエラーを出した。
もちろん、各サービスを停止してから実行すればよいのだが、メモリ節約 を試してみる。やってみたことは以下。

  1. apacheの使っていないモジュールをロードしない
  2. sendmailをpostfixに変更
  3. mysqlで、InnoDBをoffに

一番効果があったのが、3のInnoDBをoffにすること。/etc/my.confに、「skip-innodb」とどこかに書けばOK。
もちろん、InnoDBが使えないということは、トランザクション等使えないということだけど、mysqlだからいいよね。

ホーム > タグ > mysql

Tag cloud
Amazon
いろいろ

ページの上部に戻る