New Web Hosting Provider

Published by:

I recently switched from a web hosting plan with IX Web Hosting to a Virtual Private Server (VPS) plan with Rose Hosting.

I had the “Business Plus” plan with IX Web Hosting for 2 years. The service stability was always a little spotty, but the price-benefit ratio was acceptable for most of my time with them. My plan was set to expire, and the site’s performance and stability were becoming noticeably worse, so I decided to check out other options.

Beyond the degradation of stability and performance on IX Web Hosting, I found that I had trouble accessing files whenever they were generated by the web server processes. My user owned the directory structure, but backups and file uploads were owned by the web server user. Due to this, I had issues with deleting files and/or changing file permissions. To work around the issue, I had to write a PHP script that would execute as the web server owner to delete files.

Considering the limitations of a web hosting provider, I decided I would rather have full control over the services by having a dedicated or virtual private server. Because this site is not exactly “critical” to anyone, I concentrated my search based on price rather than uptime. I ruled out a dedicated server based on the higher cost, leaving me with Linux virtual private servers.

The main open source virtual environments offered on Linux at this time are OpenVZ and Xen. OpenVZ and Xen are different but not different enough for me to pick one over the other. I continued my search primarily on provider reviews and price points. The Debian Wiki site offered a list of Linux VPS hosting providers, and I started looking at the plans that several of the providers offered. I was leaning toward using VPSLink when I came across the Rose Hosting virtual server specials. The prices seemed too good to be true, but after searching for reviews, the provider seemed legitimate. They may not be as big or as stable as some of the other providers, but the price is right for a blog like mine.

I ordered the Rose Hosting service late night on a weekend, and I did not receive an email reply providing my connection information. I contacted the provider’s support personnel via email and a chat window. It turned out that their email had been marked as spam by Gmail. After pulling it out of my spam folder, things have been going well.

I moved my MySQL database and website over to the Rose Hosting server and reconfigured my DNS entry. The best thing is that I can now monitor the server’s performance and uptime using all the basic Linux utilities. As of this time, the site has gone down once for 30 minutes as a result of a server outage. I did not inquire with support as to the cause, but the site has been stable otherwise.

If anyone is interested in having a cheap virtual private server for development or fun, I recommend Rose Hosting. I have only been with them for a month, so if my recommendation changes, I will post an update.

Solaris 10 + IPMP + Oracle RAC

Published by:

I recently installed a 2-node RAC cluster using the following configuration:

Operating System: Solaris 10 (SPARC-64)
Oracle Clusterware: 11.1.0.6
Oracle ASM: 11.1.0.6
Oracle RDBMS: 10.2.0.3

Because the servers had 4 network interface cards, I asked the system administrators to configure IPMP on the Virtual IP and Private Interconnect interfaces.

The Clusterware, ASM, and RDBMS installations went as planned. However, when we tried restarting the ASM instance, it would take several minutes before coming up. While it started, I ran a ptree on the racgimon process and found that it was hanging on the “sh -c /usr/sbin/arp -a | /usr/xpg4/bin/grep SP” command. It took awhile to sort out, but I was finally able to put together enough blog posts and Metalink notes to figure out what needed to be done.

  1. Collect the hostname, VIP, and private interconnect aliases and IP addresses for each RAC node from /etc/hosts.
  2. Collect network interface information on each node, identifying which interfaces are part of each IPMP group.
    ifconfig -a
  3. Identify which interfaces nodeapps is using on each node.
    srvctl config nodeapps -n <hostname>
  4. Update the nodeapps interfaces as necessary.
    srvctl modify nodeapps -n <hostname> -A <ip_ddress>/<subnet_mask>/<ipmp_interface1>\|<ipmp_interface2>
  5. Identify the OCR private interface(s).
    oifcfg getif
  6. Delete the OCR private interface(s).
    oifcfg delif -global <if_name>
  7. Set the CLUSTER_INTERCONNECTS parameter in each ASM and database instance pfile/spile.
    CLUSTER_INTERCONNECTS='ip_address'
    or
    alter system set cluster_interconnects='ip_address' scope=spfile sid='SID1';
  8. Restart all services on each node.
  9. Verify that each database and ASM instance is using the appropriate Private Interconnect.
    select * from gv$cluster_interconnects;

The ASM startup will now take a fraction of the time it was taking before, and the correct interconnect IP address will be used.

References
Metalink Note 283107.1 – Configuring Solaris IP Multipathing (IPMP) for the Oracle 10g VIP
Metalink Note 368464.1 – How to Setup IPMP as Cluster Interconnect

Amarok Variable Bit Rate (VBR) Track Time

Published by:

I just recently installed Amarok on my Ubuntu desktop at home. It has been years since I have used anything other than XMMS to play my mp3 collection. Let me tell you…Amarok is probably the best mp3 player I have used including anything I have used on Windows. (I do not have a Mac, so I can’t vouch for any music players beyond iTunes.)

One of the issues I had after installing is that my variable bit rate (VBR) mp3 track lengths were all wrong. After reading a few HOWTO’s and forum posts, I collected enough information to fix the issue by writing the track length in the mp3 track tag.

  1. Download and install vbrfix.
    sudo apt-get install vbrfix
  2. Run vbrfix against all your mp3 files.
    find /myth/music -type f -name "*.mp3" -exec vbrfix {} {} \;
  3. Start Amarok.
  4. Rescan your music collection (assuming the songs had been added to the library).
    Tools > Rescan Collection
  5. Restart Amarok.
  6. The track times should be accurate.

I am still working out how to control my Alsa PCM channel via Amarok and LIRC. If I have time to find a solution, I will try to post it.

National Debt

Published by:

I have been concerned about the national debt since I was in high school. Seeing how the debt has increased astronomically since President Bush has been in power, I started pondering which presidential candidate will most likely be the most fiscally responsible. They all appear to want to give “tax refunds” to the American people. This sounds great if you are in the lower to middle class. You get a couple hundred dollars to buy some things you need…or often do not need. In the end, the corporations and upper class end up with the money, because it is spent at stores. Theoretically, this money is then reinvested in the economy rather than saved away by the richest 1%.

I remember the days in the late 90’s when the budget had a surplus. If we had stuck to our guns and paid down the debt, the economy would have become more stable over time. However, since Mr. Bush has been in office, that has not been the case. His policy seems to be spending as much as possible without considering the long-term consequences. As of today, the national debt is $9.2 TRILLION! It was half of that before he went into office, and the budget surplus would have paid off all the payable debt by now. We all know that certain world events have transpired since Clinton left office. However, that is no excuse for what the government is doing. The uncontrolled spending must be stopped, and we must start paying off the national debt.

Interestingly enough, we can actually pay the debt by mailing payments to the following address. I hope this is not a government scam to funnel contributions into defense funds, but I think it is the best way to know where your money is going. Otherwise, it goes into a giant pot for the politicians to spend as they please.

How do you make a contribution to reduce the debt?

Make your check payable to the Bureau of the Public Debt, and in the memo section, notate that it is a Gift to reduce the Debt Held by the Public. Mail your check to:

Attn Dept G
Bureau Of the Public Debt
P. O. Box 2188
Parkersburg, WV 26106-2188

Reference: TreasuryDirect

Spinning Forms Processes

Published by:

Do you happen to have f60webmx processes that run for days or hours on end, consuming up to 100% of your forms tier CPUs? I do, and I decided to do something about it.

The following script will kill forms processes that hog the CPU past a defined time limit. I have set the process time threshold at 4 hours, and it has been running in a production environment for ~8 months. No users have complained so far, but I recently updated the script to capture the user, responsibility, and form information if available. I plan on calling some of the users to see if their forms sessions were valid or not. Use the script at your own risk, and if you improve upon it, please forward me the code or a link to it, so that we can all benefit from the update.

#!/bin/ksh
#
# Script used to kill forms processes running 4 hours or more.
#
# Usage: kill_runaway_forms.sh
#
######################################################
#
# History: Created 2007-05-09 by Shad
# Update 2007-12-14 by Shad - Added SQL to get form info.
#
######################################################

PROCESS="f60webmx webfile" # Process name to check
HOSTNAME=`hostname`
NOTIFY="you@email.com"

if [ -z $TWO_TASK ]
then
echo "Exiting. TWO_TASK is not set."
exit
fi

ps -ef -o pid,time,args | \
grep -v grep | \
grep "$PROCESS" | \
awk '$2 ~ /[0-9]-[0-9][0-9]:[0-9][0-9]:[0-9][0-9]/ || $2 ~ /[0-9][4-9]:[0-9][0-9]:[0-9][0-9]/' | \
while read LINE
do

PROCESS_ID=`echo $LINE | awk '{print $1}'`
PROCESS_TIME=`echo $LINE | awk '{print $2}'`
PROCESS_NAME=`echo $LINE | awk '{print $3}'`
echo "PROCESS_ID: $PROCESS_ID"
echo "PROCESS_TIME: $PROCESS_TIME"
echo "PROCESS_NAME: $PROCESS_NAME"

mailx -s "Killed $PROCESS_NAME $PROCESS_ID on $HOSTNAME" $NOTIFY < exit 0