LendKey

Friday, June 20, 2008

Allow Linux box in intranet to access internet via a gateway server

I have three servers in a intranet environment. One(A) can access internet directly. Others(B andC) are connected to A.

In order to allow B and C access internet, do the following settings:
1. vi /etc/resolve.conf
Add the following text in it:
nameserver <a's IP>

2. vi /etc/sysconfig/network
Add
GATEWAY= <a's IP>

3. Run /etc/init.d/network restart

Do the three steps on both B and C. Then they should both be able to access internet.
Try it by ping yahoo.com.

Friday, June 6, 2008

Submit form to a popup window

Sometime, when submit a form, you wanna open a new popup window and show submit result there.

Here's the code that can do the work:

<form action="report.html"
where the form will be submitted to
target="report"
name of the popup window
onsubmit="window.open('about:blank','report','width=300,height=200')">
open a new window that has the target window name and expected window size first.

It was tested in Firefox 3.0 Beta, IE 7, Opera

Tuesday, May 27, 2008

Quicken 2006 on Ubuntu 8.04 X64

Make sure you have IE4Linux (http://www.tatanka.com.br/ies4linux/page/Main_Page) installed.
Then install Quicken 2006 in Ubuntu 8.04.

Everything works smoothly, including auto upgrading patches.

I need to play more, especially test if account downloading from my online accounts still works or not.

Update: June 6th,2008
Quicken cannot do online update for my accounts, such as my credit card or band transaction history. Seams like this is an known issue. Lots of people complaint about it.

Linux driver for Lexmark E120N printer

The networked laser printer from Lexmark works like charm with my Windows machines. After I migrated to Ubuntu Linux 8.04 X64, it took me a while to find the correct driver for it.

After a few days of try, I found the best driver to use for this printer is:
Lexmark Optra E321 Foomatic/lj4dith

Finally I was able to get the first stack of fine printed document sent from my Thinkpad T61P running Ubuntu 8.04 X64!

Friday, April 25, 2008

My experience resolving slowness of PHP/MySQ

A client called me several times complaining random slowness of his site which is running a fairly old Fedora 2 with PHP 4 and MySQL 3.

The problem he had is when he access a particular page, sometime, it goes super fast, sometime, it could take over 5 minutes or more to get the result back. There're only around less than 50 people using the site at the same time. Challenge is there's no fix pattern to replicate the issue. And I personally played with the page for over 20 minutes, and never was able to replicate the issue.

With lots of frustration, I started my journey to resolve the issue.

1. My friend google.com
Searched keywords like: slow php mysql linux
Found some hints on how to optimize mySQL and PHP. Nothing really help. However, I did find a debug tool to log the slow queries.

2. Log slow queries
Then I changed my.cnf and added:

set-variable = long_query_time=3
log-slow-queries=/var/log/mysql/slow-query

Please be advised, if you do not put set-variable = in front of long_query_time=3, it will not work, and mySQL will not start.

So I got a nice report of slow queries. From there, I found out some queries without sufficient index. After adding indices, I'm sure lots of queries got improved, however, the particular issue is still there. The big random slowness still happen.

4. mytop
Found a nice tool to monitor mySQL:
http://jeremy.zawodny.com/mysql/mytop/

Installation was easy. It requires PERL and some extra modlues. CPAN did a nice work to help me install them, although it took around half hours to do the upgrading, downloading and installation. Good things is I got lots of things to do while waiting.

In order to make it easy to run mytop, need to create a config file:
~/.mytop

user=<your user name here, I used admin>
pass=<your password here>
host=localhost
db=<your DB name here>
delay=5
port=3306
socket=
batchmode=0
header=1
color=1
1dle=1

Run mytop helped me verified my optimization of queries were working. Again, the issue is still there.

3. Check error log of PHP
Went to check error log of Apache/PHP. WOW! the error log file and access log reached over 600M each!!!
That might explain why it goes so slow. When multiple requests sent to server, to handle each request, server need to log something. To append text at end of a 600M file cannot be fast, not to mention having multiple threads/process racing for the change.
So backed up the log, restarted apache. Looks like things are getting better!

4. Restart Server
Some how found the server has over 2800 tasks. Most of them are related to rpm, awk, etc.
Something like below:

4 0 13076 12539 16 0 2456 264 pipe_w S ? 0:00 awk -v progname=/etc/cron.daily/rpm progname {????? print progname ":\n"????? progname="";???? }???? { print; }
4 0 13077 13075 16 0 6280 432 - S ? 0:00 /usr/lib/rpm/rpmq -q --all --qf %{name}-%{version}-%{release}.%{arch}.rpm\n
4 0 13078 13075 18 0 28856 336 pipe_w S ? 0:00 sort
5 0 19864 1 15 0 10708 1340 pipe_w S ? 0:00 /usr/libexec/webmin/shell/index.cgi


Not sure what they are. So I decided to reboot server. Task number dropped to less than 100.

After the journey, server is working OK so far. No report of slowness yet. But I will give it a couple of more days to confirm.

Friday, January 25, 2008

Story on nagios setup and my web server

I tried to installed Nagios on my web server today, hoping it could help me monitoring the server and report any problem it can detect.

After I followed instruction on:

http://nagios.sourceforge.net/docs/3_0/quickstart-fedora.html

/usr/sbin/usermod -G nagcmd apache

to change group of apache, my server went completely down! Apache refused me from accessing any pages on mysite.

I initially thought it was related to SELinux setting, but later I figured, my SELinux is not enabled.

After reviewing secure log, I noticed apache was removed from the following two groups:
apache
psaserv


By adding it back to those groups, my sever is running OK again.

Well, be careful when you change any group setting :(