2006-07-20 00:03:32 (in Berlin, Germany)

The Brokenercle Reloaded

Funny. Due to missing exposure and a "comment" feature there is not much feedback I get for this blog. The entry that triggered most of it yet, is this one about an unsolvable Oracle/PHP problem.

So for the both of you that had the same problem, the archives and the search index: Should your OCI8 client program hang for no reason with the 10.2.0.1 client: downgrade. I solved it by downgrading to 10.1.0.4 but this known bug is supposedly fixed in 10.2.0.2 but I did not test it. Thanks for the feedback, guys.

Posted by Raimund 'Raimi' Jacob | Permalink | Categories: english, Linux, Technokratie

2006-06-01 11:45:04 (in Berlin, Germany)

Inline upgrade of multiple instances MaxDB 7.5 to 7.6

It is actually in the docs but this is the condensed version of what you have to do to upgrade multiple 7.5 instances (on Linux) to current 7.6 of MaxDB:
  • Full backup, Download from http://dev.mysql.com/downloads/maxdb/7.6.00.html
  • Shutdown all instances (db_offline), stop x_server
  • Use SDBINST to install the software, don't touch any instance
  • Connect to each instance with dbmcli -d DB -u dbm,dbm
  • db_reg
  • param_checkall
  • db_online
  • load_systab
If load_systab fails you might need to supply -d dba,dba and/or domain password again, whysoever.

One of my instances got toasted, it could not even perform a full backup anymore. But that was an old instance with uncertain family history, so I do not care.

Posted by Raimund 'Raimi' Jacob | Permalink | Categories: english, Technokratie

2006-03-17 13:25:28 (in Berlin, Germany)

megafake (don't do it)

This is a general warning: Do not use megaraid SATA RAID controllers (LSI Logic / Symbios Logic PowerEdge Expandable RAID Controller 4 (rev 01), also rebranded and sold by major manufacturers).

We had a machine with both Linux 2.4 and 2.6 running (various versions), Seagate and WDC disks, tried to tune software and BIOS parameters. Nothing helped. This is what we took out of order:
megaraid cmm: 2.20.2.5 (Release Date: Fri Jan 21 00:01:03 EST 2005)
megaraid: 2.20.4.5 (Release Date: Thu Feb 03 12:27:22 EST 2005)
megaraid: fw version:[713G] bios version:[G117]
scsi0 : LSI Logic MegaRAID driver
This controller does not deliver more than 6MB/s when reading from a mirrored RAID. Sustained write performance is something like 4MB/s, but that's not the worst part: You can write very quickly to it until the on-board cache is full (64MB). While this cache is being flushed the host system comes to a complete halt since every disk access is suspended. The system becomes unusable.

We solved the problem by throwing out the controller replacing it with a Linux software raid. Suddenly the disks read and write happily at about 40MB/s. The fun part about this fact is that both the on-board SATA chip and the chips on the LSI controller are Sil 3114. It's the same thing, LSI just screwed it up.

We got rid of the controller several months back. If you are in the unlucky position of owning this device you might try flashing a new controller BIOS (which will be fun if your server (like ours) doesnt have a removable drive and doesnt run a Redmond-based OS) -- but this is just a straw.

The reason why I blog this now is that some of our customers have the same problem and others even buy new machines with this controller (Please Michael, stop selling them). When i started having performance problems i couldnt find negative reports on the net so this is my attempt to raise some noise.

Posted by Raimund 'Raimi' Jacob | Permalink | Categories: english, Linux, Technokratie, mysql

2006-02-16 10:03:03 (in Berlin, Germany)

Unsolvable problem (PHP/Oracle)

*Sigh*. The command line PHP at a customer's site broke from one day to the other. When invoking it it just hangs at 100% CPU. Here is an strace:
...
gettimeofday({1140077364, 254381}, NULL) = 0
access("./network/admin/sqlnet.ora", F_OK) = -1 ENOENT (No such file or directory)
access("./network/admin/sqlnet.ora", F_OK) = -1 ENOENT (No such file or directory)
fcntl64(169826488, F_SETFD, FD_CLOEXEC) = -1 EBADF (Bad file descriptor)
brk(0)                                  = 0xa20b000
brk(0xa22d000)                          = 0xa22d000
times(NULL)                             = -2126335408
times(NULL)                             = -2126335408
times(NULL)                             = -2126335408
...
And it keeps calling times() until it is interrupted. Here is a trace at this time:
(gdb) bt
#0  0x0040d3ed in times () from /lib/tls/libc.so.6
#1  0x01a27599 in sltrgatime64 () from /usr/lib/oracle/10.2.0.1/client/lib/libclntsh.so.10.1
#2  0x0152070f in kghinp () from /usr/lib/oracle/10.2.0.1/client/lib/libclntsh.so.10.1
#3  0x01129b47 in kpuinit0 () from /usr/lib/oracle/10.2.0.1/client/lib/libclntsh.so.10.1
#4  0x01128f8e in kpuinit () from /usr/lib/oracle/10.2.0.1/client/lib/libclntsh.so.10.1
#5  0x011f4c5e in OCIEnvInit () from /usr/lib/oracle/10.2.0.1/client/lib/libclntsh.so.10.1
#6  0x0808d6ea in php_oci_init_globals (oci_globals_p=0x82e7a60) at /root/php-4.4.1/ext/oci8/oci8.c:451
#7  0x0808d765 in zm_startup_oci (type=1, module_number=0) at /root/php-4.4.1/ext/oci8/oci8.c:495
#8  0x08137823 in zend_startup_module (module=0x82c6420) at /root/php-4.4.1/Zend/zend_API.c:1006
#9  0x08111e39 in php_startup_extensions (ptr=0x82e657c, count=-2126330213) at /root/php-4.4.1/main/main.c:1041
#10 0x081471da in php_startup_internal_extensions () at main/internal_functions.c:65
#11 0x08112222 in php_module_startup (sf=0xffffffff, additional_modules=0x0, num_additional_modules=0)
    at /root/php-4.4.1/main/main.c:1216
#12 0x0814659d in main (argc=1, argv=0xbfffe654) at /root/php-4.4.1/sapi/cg
The question is: How can such a thing simply break? Is the uptime too long? What is the Oracle client waiting for? How can I even approach this proplem? Oh there's no fun anymore (end quote).

Posted by Raimund 'Raimi' Jacob | Permalink | Categories: english, Technokratie

2006-01-19 12:45:16 (in Berlin, Germany)

PHP considered harmful (too bloody dumb)

I don't like PHP for various reasons but today I found something to pinpoint (PHP 4.4.0-4 (cli)). I wanted to use some OO so that a Master instance can invoke a Slave instance which in turn calls back the Master to transfer some data. This doesn't seem to be such a terrible thing to do. Here is a sandbox:
<?php

class Slave {

  var $master;

  function bang() {
    $this->master->callback();
  }
}


class Master {

  var $slave;
  var $foo = -1;

  function Master() {
    $this->foo = 0;
    $this->slave = new Slave();
    $this->slave->master = & $this;
    $this->foo = 1;
    echo "1 Master: ".$this->foo."\n";
    echo "1 Slave : ".$this->slave->master->foo."\n";
  }

  function callback() {
    echo "Callback from slave: $this->foo (should be 2)\n";
  }

  function doSomething() {
    echo "1_Master: ".$this->foo."\n";
    echo "1_Slave : ".$this->slave->master->foo."\n";
    $this->foo = 2;
    echo "2 Master: ".$this->foo."\n";
    echo "2 Slave : ".$this->slave->master->foo."\n";
    $this->slave->bang();
  }
}

$mst = new Master();
$mst->doSomething();

?>
The copy-on-assign logic of PHP has been a bad idea since it's very conception, but the ability of assigning references at least made it possible to work around this "feature" most of the time.

Now, the above code emits this:
1 Master: 1
1 Slave : 1
1_Master: 1
1_Slave : 1
2 Master: 2
2 Slave : 1
Callback from slave: 1 (should be 2)
Which proves that assigning the references works in the constructor but when doSomething() is called, the Master instance and the Slave instance have different copies (?) of the Master. The more I look at it the less i can understand where the copy operation might even take place.

Until someone confirms this is a bug in PHP or in my understanding of the world I postulate that the brain of the PHP "inventor(s)" looks like this:

Posted by Raimund 'Raimi' Jacob | Permalink | Categories: english, Technokratie

2005-12-28 16:15:55 (in Berlin, Germany)

Unknown Sun hardware

I like mystery hardware. Stefan brought me a Sun VTU 100 C set of which we dont have a clue of. This term cannot be googled and Sun doesn't have it on the website. It seems to be a pair of transmitter/receiver for video (and perhaps keyboard) signals over a distance of 100m. Both boxes basically contain some connectors and transistors for (de)amplifying (2N3866).
One notable thing might be this switch-like blue thing shown here. Little metal clips that can fitted or removed. Seems to be an ancestor of DIP switches. Anyway, I'll probably throw it away but if anyone knows what this (around) 1991 technology was used for, I would be glad to hear about it. Also, hardware manufacturers should be forced to leave old product sheets online forever.

Posted by Raimund 'Raimi' Jacob | Permalink | Categories: english, Technokratie

2005-11-30 08:22:01 (in Berlin, Germany)

Wiki Wanted

I am looking for a Wiki software that fulfills these requirements:
  • Allow creation of an hierarchy
  • Export hierarchies as PDF (or processible XML)
  • Accessible via tunnel (MediaWiki has broken redirects)
  • ...the rest can be like MediaWiki
We use a MediaWiki but the lack of structure is dangerous. Information gets burried and is never found again. The categories are a beginning. But I i want to put categories into categories and some logic should create a structure from that information and create a browsable tree. Am I asking too much? Anyone knows such a thing? Drop me a note.

Posted by Raimund 'Raimi' Jacob | Permalink | Categories: english, Technokratie