service “psa” is finished with errors: #703

To setup my new WordPress installation I had to create a new database in Plesk. I wasn’t there for a loooooong time and I thought while I’m there I could upgrade Plesk to a current version, it was always easy in the last years.

I’ve tried jumping directly from 8.4 to 9.5 using the Plesk Panel. Result: License error, the license can not be upgraded.

Because I wanted quick results and not waste much time on Plesk I decided to upgrade to 8.6 only, not caring about that 9.x release.

The Update from 8.4 to 8.6 worked, well, at least it says so.

What I was left with was a strange error message:

Operation start with the VPS(s) service “psa” is finished with errors: #703 Can not start/stop/restart service: service “psa” status is not “running” after command “start”.

What now? I’ve started wandering around the internet reading all posts with #703 errors (aka googlin and there were just ~10 ;) and found no real help.

Starting the psa service on the shell looked fine, the logfiles had no obvious error message but Plesk just stopped working.

I didn’t want to stay on the problem for long so I decided to re-install the whole thing using the “repair” options of Plesk.

I started the Plesk Backup (the last one was 2 years old) and also started to download all data via Transmit.

About 2 hours and 4GB later the backup was done and about 20% of my data downloaded. Why are Plesk Backups so slow?

Well, the re-install was finished in about 15 minutes, finally leaving me with the very same message:

Operation start with the VPS(s) service “psa” is finished with errors: #703 Can not start/stop/restart service: service “psa” status is not “running” after command “start”.

At this point I just wanted to get it done and went to the support center of my provider. Looking forward to post a support (free) request, it wasn’t my fault, I just pushed the buttons that were already there! ;-) (otherwise I the paid support jumps in).

The support request was written and the complete form filled out, when I started thinking about maybe downgrading my VPS because the current resources are no longer needed. So I opened a new tab and not only found out that there was a downgrade option but that the “downgrade” will also save me half the money by adding more resources.

Host Europe seems to have changed their packages in the last years, maybe I should have read their newsletters?

My old VPS was a “VPS Linux XL 2.0″ with 512MB RAM and 1.5TB Traffic at €19,99.
The new (and smallest) VPS is a “VPS Linux L 4.0″ with 1GB RAM and 5TB Traffic at €12,99.

Not much to think about, isn’t it? Ordered it right away changing my current VPS plan.

Deleted about 2GB of data on my VPS and started the downloaded again, this time with scp on the Terminal.

I wanted to continue with the setup the next day, it was 1am, I should get some sleep. But no, the new VPS was ready in less than 30 minutes – that was quick! – couldn’t stop now. My scp backup was also nearly finished, got about 2GB downloaded.

So I repeated my previous mistake: I upgraded the pre-installed Plesk 9.5 with the included updater to 9.5.2

… leaving Plesk again unusable, this time because of a License that was invalid. This seems so ridiculous. Walking straight to the support center, finding out that Licenses should be upgradeable and that I need to write an email if I ran into these problems. Parallel I was hitting that strange “Retrieve Key” button in Plesk so often (and receiving error message via email), that my spam filter must have detected an attack :)

Finally I tried: Logout – Login … whew! It worked!

Why does everything need to be so complicated in the virtual enviroment? Btw. Plesk still looks so cheap imitating every windows skin since windows 3.1 not having somehing of their own. But it does its job.

Even the background image is the same:

Leave a Reply

V8 vs. Spidermonkey

About a year ago I decided to go with v8js to use javascript code within php because it was so much easier to handle.

Today I benchmarked a problem related to the v8 engine and just out of curiosity I ran the same test with Spidermonkey.

A simple A/B Test:

  • A = define a JS Function and call it it in a loop
  • B = define a JS Function once and call it in a loop

The results for V8 were:

Runs 10 100 1.000 10.000 100.000
A 0.0048ms 0.0018ms 0.0159ms 0.4257ms 4.9063ms
B 0.0004ms 0.0011ms 0.0072ms 0.1733ms 1.8506ms

It was not really surprising that the one-time-definition was faster.
I tried exact the same with Spidermonkey:

Runs 10 100 1.000 10.000 100.000
A 0.0016ms 0.0276ms 0.2141ms 1.8415ms 18.483ms
B 0.0011ms 0.0039ms 0.0713ms 0.8591ms 8.4125ms


Huge difference compared to V8!


Here’s the test code:

V8 Test:


<?php
$runList = array(10, 100, 1000, 10000, 100000);
$jsFunc = 'function myTestFunc () { return {foo: "bar"}; } ';
foreach ($runList as $runs ) {
$start = mstime();
$js = new V8Js('Test');
for ( $i = $runs; $i > 0; $i-- ) {
$js->executeString($jsFunc, 'Test.Context');
$js->executeString("myTestFunc();", 'Test.Context');
}
echo "#1: " . (mstime() - $start)." ({$runs} with re-definition)<br />";
unset($js);
$start = mstime();
$js = new V8Js('Test');
$js->executeString($jsFunc, 'Test.Context');
for ( $i = $runs; $i > 0; $i-- ) {
$js->executeString("myTestFunc();", 'Test.Context');
}
echo "#2: " . (mstime() - $start)." ({$runs} without re-definition)<br />";
unset($js);
echo "<hr />";
}
function mstime() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}


Spidermonkey Test:


<?php
$runList = array(10, 100, 1000, 10000, 100000);
$jsFunc = 'function myTestFunc () { return {foo: "bar"}; } ';
foreach ($runList as $runs ) {
$start = mstime();
$js = new JSContext('Test');
for ( $i = $runs; $i > 0; $i-- ) {
$js->evaluateScript($jsFunc, 'Test.Context');
$js->evaluateScript("myTestFunc();", 'Test.Context');
}
echo "#1: " . (mstime() - $start)." ({$runs} with re-definition)<br />";
unset($js);
$start = mstime();
$js = new JSContext('Test');
$js->evaluateScript($jsFunc, 'Test.Context');
for ( $i = $runs; $i > 0; $i-- ) {
$js->evaluateScript("myTestFunc();", 'Test.Context');
}
echo "#2: " . (mstime() - $start)." ({$runs} without re-definition)<br />";
unset($js);
echo "<hr />";
}
function mstime() {
list($usec, $sec) = explode(" ", microtime());
return ((float)$usec + (float)$sec);
}



I just wanted to share the following complaint:

WS only captures the visible part of the web page, the rest is blank.

Please fix this or I’ll have to write a scathingly negative review and give you zero stars.

(Running iOS 5 developer preview.)

Yours, [..]

Remember: iOS 5 is just a Developer preview right now (a few days old) and scheduled to be made public in the next months.

Time Machine Interval

Time Machine is a great way to backup all files and restore to any point in time, by default it creates a new backup every hour.

Normally this won’t hurt the performance but if you have many small files on your disk or huge portions of your data change very often, it will slow down the whole system.

You can change the intervals to reduce the slowdowns. To backup only every 6 hours, open your terminal and:

sudo defaults write /System/Library/LaunchDaemons/com.apple.backupd-auto StartInterval -int 21600

The interval is in seconds.

To setup more sophisticated schedules you can also try a free tool called TimeMachineEditor (http://timesoftware.free.fr/timemachineeditor/).

Archived Apps in XCode and where they are

Archived Apps in XCode are a great way to submit new versions to iTunes Connect because they are automatically grouped, tagged and re-signed in the process – you don’t need to manually find the compiled App, zip it & upload with the Application Loader.

If you start at a new Mac without data migration, you can simply copy the folder with all archived App versions to your new users library.

You can find it here:

/Users/<USERNAME>/Library/Application Support/Developer/Shared/Archived Applications


Or, if you develop at different Macs, symlink that folder to your Dropbox to have them accessible everywhere :-)

Analytics for iPad, Release 1.6

Today the 1.6 Update was submitted to Apple. Originally this update have been scheduled for the first week of November but was put on hold to be released with the iOS 4.2 version to have the least possible problems when everyone upgrades their iPad :-)

It contains only a few but very cool new features:


The new features are:

  • Support for Multiple Accounts – often asked for, here it comes!
  • Advanced Segments – take a better look at your reports by switching and comparing subsets of data
  • Open Reports in other Apps like iBooks – any App that supports PDF Files can receive reports for later usage
  • Print your Reports! – Support for AirPrint is now built in


Improved was the following:

  • The general speed of the website listing updates and report downloads was improved
  • Goals have now names instead of numbers


Also one bugfix is included:

  • Some users with special characters in their password had trouble logging in


In addition to the Update of the Free Version including its Premium Upgrade, there was also a full blown premium Version submitted to the store. That version is exactly the same but meant for everyone who has disabled In-App-Purchases and can’t get the premium upgrade.


2010/12/05 – Today the update hit the store, watch out for update notices in iTunes or the App Store to get it on your iPad!

Detect iPad and iPhone using Javascript

I’ve got some people asking for a simple Javascript-Detection for iPad’s.

It’s simple, just take a look at the browser identification:




Example:


It basically searches in the browser information for any occurence of “iPad” or respectively “iPhone” and returns true if found.

Here’s an example of Safari’s identification on the iPad:


Switch to our mobile site