User:Rootwyrm/FreeBSD Server: Difference between revisions
(Created page with " == Configuring MusicBrainz Server on FreeBSD 8.x and 9.x == What you'll need: * FreeBSD 8.x or FreeBSD 9.x with root or sudo access * Optionally, the ability to create a new...") |
|||
(6 intermediate revisions by the same user not shown) | |||
Line 22: | Line 22: | ||
* Perl 5.14 |
* Perl 5.14 |
||
<nowiki>cd /usr/ports/lang/perl5.14 |
<nowiki>cd /usr/ports/lang/perl5.14 |
||
make - |
make -DWITH_SITECUSTOMIZE install</nowiki> |
||
* PostgreSQL 9.1 - |
* PostgreSQL 9.1 - gcc, ICC; clang builds should omit -DWITH_OPTIMIZED_CFLAGS for now. |
||
<nowiki>cd /usr/ports/databases/postgresql91-server |
<nowiki>cd /usr/ports/databases/postgresql91-server |
||
make -DWITH_NLS -DWITH_OPTIMIZED_CFLAGS -DWITH_XML -DWITH_TZDATA -DWITH_INTDATE -DWITH_SSL |
|||
make -Dnls -Dxml -Dtzdata -Dintdate -Dssl -Doptimized_cflags |
|||
make install |
make install |
||
cd /usr/ports/databases/postgresql91-contrib |
cd /usr/ports/databases/postgresql91-contrib |
||
Line 66: | Line 66: | ||
<nowiki>cd /usr/ports/lang/perl5.14 |
<nowiki>cd /usr/ports/lang/perl5.14 |
||
make -Dusesitecustomize install</nowiki> |
make -Dusesitecustomize install</nowiki> |
||
* PostgreSQL 9.1 - |
* PostgreSQL 9.1 - gcc, ICC; clang builds should omit -DWITH_OPTIMIZED_CFLAGS for now. |
||
<nowiki>cd /usr/ports/databases/postgresql91-client |
<nowiki>cd /usr/ports/databases/postgresql91-client |
||
make -DWITH_NLS -DWITH_OPTIMIZED_CFLAGS -DWITH_XML -DWITH_TZDATA -DWITH_INTDATE -DWITH_SSL |
|||
make -Dnls -Dxml -Dtzdata -Dintdate -Dssl -Doptimized_cflags |
|||
make install</nowiki> |
make install</nowiki> |
||
* Git |
* Git |
||
Ensure only the following options are selected: |
Ensure only the following options are selected: |
||
<nowiki>CONTRIB, ETCSHELLS, ICONV, NLS, PERL</nowiki> |
|||
** CONTRIB |
|||
This will also pull in Python and IO::Socket::SSL - the default options should be accepted when prompted. |
|||
** ETCSHELLS |
|||
** ICONV |
|||
** NLS |
|||
** PERL |
|||
<nowiki>cd /usr/ports/devel/git |
<nowiki>cd /usr/ports/devel/git |
||
make config -- this is where you select options |
make config -- this is where you select options |
||
make install</nowiki> |
make install</nowiki> |
||
* GNU Make |
|||
<nowiki>cd /usr/ports/devel/gmake && make install</nowiki> |
|||
* expat libraries |
* expat libraries |
||
<nowiki>cd /usr/ports/textproc/expat2 && make install</nowiki> |
<nowiki>cd /usr/ports/textproc/expat2 && make install</nowiki> |
||
* Gnome XML libraries (libxml2) |
|||
<nowiki>cd /usr/ports/textproc/libxml2 && make install</nowiki> |
|||
* Carton - this will pull in a number of Perl dependencies as well |
* Carton - this will pull in a number of Perl dependencies as well |
||
<nowiki>cd /usr/ports/devel/p5-carton && make install</nowiki> |
<nowiki>cd /usr/ports/devel/p5-carton && make install</nowiki> |
||
Line 101: | Line 94: | ||
<nowiki>git clone git://git.musicbrainz.org/musicbrainz-server.git</nowiki> |
<nowiki>git clone git://git.musicbrainz.org/musicbrainz-server.git</nowiki> |
||
Now perform FreeBSD specific configuration for your .gitignore file. |
Now perform FreeBSD specific configuration for your .gitignore file. |
||
<nowiki>echo "/admin/cron/freebsd*" >> musicbrainz-server/.gitignore</nowiki> |
<nowiki>echo "/admin/cron/freebsd*" >> musicbrainz-server/.gitignore</nowiki> |
||
<pre style="color:green">NOTE: This is a temporary solution until the various cron scripts are fixed to be path neutral.</pre> |
<pre style="color:green">NOTE: This is a temporary solution until the various cron scripts are fixed to be path neutral.</pre> |
||
You will now need to perform more than a little dancing with Carton to ensure packages are installed correctly |
You will now need to perform more than a little dancing with Carton to ensure packages are installed correctly. And yes, it is necessary to run 'install --deployment' twice. |
||
<nowiki>cd musicbrainz-server |
<nowiki>cd musicbrainz-server |
||
carton install DBD::Pg |
|||
carton install Catalyst::Plugin::ErrorCatcher |
|||
carton install --deployment |
carton install --deployment |
||
carton install --deployment |
|||
cp carton.lock carton.lock.save |
|||
carton install DateTime::Set DateTime::Event::ICal |
|||
carton install Catalyst::Runtime Catalyst::Plugin::AutoRestart |
|||
carton install REST::Utils Function::Parameters |
|||
carton install XML::Parser::Lite</nowiki> |
|||
Installation is now complete. You should configure MusicBrainz Server as you would on any other system. |
|||
=== Configuring crontab for a MusicBrainz Slave === |
|||
You will need a separate crontab script which is path neutral for operating a MusicBrainz Slave server on FreeBSD, which is currently not in git. |
|||
Install <tt>/usr/ports/sysutils/logrotate</tt> either by building or by using <tt>pkg_add -r logrotate</tt> |
|||
Create the file <tt>musicbrainz-server/admin/cron/freebsd_slave.sh</tt>: |
|||
<nowiki>#!/usr/local/bin/bash |
|||
PATH="$PATH:/usr/local/bin:/usr/local/sbin" |
|||
mb_server=`dirname $0`/../.. |
|||
cd $mb_server |
|||
eval `carton exec -- ./admin/ShowDBDefs` |
|||
carton exec -- ./admin/config.sh |
|||
X=${SLAVE_LOG:=$MB_SERVER_ROOT/slave.log} |
|||
X=${LOGROTATE:=logrotate --state $MB_SERVER_ROOT/.logrotate-state} |
|||
carton exec -- ./admin/replication/LoadReplicationChanges >> $SLAVE_LOG 2>&1 || |
|||
{ |
|||
RC=$? |
|||
echo `date`" : LoadReplicationChanges failed (rc=$RC) - see $SLAVE_LOG" |
|||
} |
|||
$LOGROTATE /dev/stdin <<EOF |
|||
$SLAVE_LOG { |
|||
daily |
|||
rotate 30 |
|||
} |
|||
EOF |
|||
#eof</nowiki> |
|||
Then perform <tt>chmod +x musicbrainz-server/admin/cron/freebsd_slave.sh</tt> followed by <tt>crontab -e</tt> as the user running the MusicBrainz Server. This example runs every 2 hours at 35 minutes past the hour. |
|||
<nowiki>#Crontab for MusicBrainz Server Slave on FreeBSD |
|||
#Min Hr MDay Month WDay Command |
|||
35 */2 * * * ~/musicbrainz-server/admin/cron/freebsd_slave.sh</nowiki> |
|||
=== Performance on FreeBSD === |
|||
==== MusicBrainz Server ==== |
|||
For Perl instances, performance on FreeBSD is generally equal to that of Linux. Non-exhaustive testing has indicated that FreeBSD may be slightly faster on like-for-like hardware configurations, but the difference is generally ~20ms or less on most queries. However, particularly complex queries may demonstrate ''exponential'' and repeatable performance gains on FreeBSD. |
|||
Test Environment: BabyDragon (X3450, VMware ESXi 4.0U3) - no CPU restriction, 512MB memory, remote PostgreSQL 9.1.4. |
|||
Test Query: Search for "Beethoven," click "Ludwig van Beethoven" |
|||
Notes: Database was shut down, all buffers and cache were flushed, and restarted between each test. |
|||
===== Linux Test ===== |
|||
<nowiki>Linux Environment: Debian wheezy/sid, kernel 3.2.0-3-PAE, Perl 5.14.2 |
|||
First Operation, 597.551ms: |
|||
Key Value |
|||
MusicBrainz::Server::Data::Search->external_search 0.23721 |
|||
MusicBrainz::Server::Data::Country->_get_by_key 0.05206 |
|||
MusicBrainz::Server::Data::FileCache->manifest_files 0.00812 |
|||
MusicBrainz::Server::Data::Search->schema_fixup 0.00667 |
|||
MusicBrainz::Server::Data::Country->_new_from_row 0.00100 |
|||
MusicBrainz::Server::Data::Country->find_by_code 0.00044 |
|||
MusicBrainz::Server::Data::RateLimiter->check_rate_limit 0.00008 |
|||
MusicBrainz::Server::Model::MB->context 0.00006 |
|||
MusicBrainz::Server::Data::Country->_columns 0.00005 |
|||
MusicBrainz::Server::Data::RateLimiter->get_socket 0.00005 |
|||
MusicBrainz::Server::Data::Country->_entity_class 0.00005 |
|||
MusicBrainz::Server::Data::Country->_column_mapping 0.00004 |
|||
MusicBrainz::Server::Data::Country->_table 0.00004 |
|||
MusicBrainz::Server::Data::Artist->_entity_class 0.00001 |
|||
Second Operation, 13652.024ms: |
|||
Key Value |
|||
MusicBrainz::Server::Data::ReleaseGroup->find_by_artist 10.98394 |
|||
MusicBrainz::Server::Data::ArtistCredit->get_by_ids 0.90881 |
|||
MusicBrainz::Server::Data::Relationship->_load 0.25070 |
|||
MusicBrainz::Server::Data::Artist->_get_by_keys_append_sql 0.22249 |
|||
MusicBrainz::Server::Data::EntityTag->find_top_tags 0.18149 |
|||
MusicBrainz::Server::Data::Editor->_get_by_keys_append_sql 0.15582 |
|||
MusicBrainz::Server::Data::CoreEntity->_new_from_row 0.10296 |
|||
MusicBrainz::Server::Data::Editor->load_preferences 0.06356 |
|||
MusicBrainz::Server::Data::Link->_load_attributes 0.05785 |
|||
MusicBrainz::Server::Data::Entity->_get_by_keys_append_sql 0.04327 |
|||
MusicBrainz::Server::Data::LinkType->_load_attributes 0.01533 |
|||
MusicBrainz::Server::Data::Artist->load_meta 0.01356 |
|||
MusicBrainz::Server::Data::Artist->is_empty 0.01314 |
|||
MusicBrainz::Server::Data::Artist->_build_ipi 0.00867 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->load 0.00852 |
|||
MusicBrainz::Server::Data::FileCache->manifest_files 0.00833 |
|||
MusicBrainz::Server::Data::ArtistCredit->load 0.00619 |
|||
MusicBrainz::Server::Data::Artist->_new_from_row 0.00526 |
|||
MusicBrainz::Server::Data::EntityTag->find_tag_count 0.00506 |
|||
MusicBrainz::Server::Data::Entity->_new_from_row 0.00410 |
|||
MusicBrainz::Server::Data::Relationship->_new_from_row 0.00365 |
|||
MusicBrainz::Server::Data::CoreEntity->_get_by_keys_append_sql 0.00290 |
|||
MusicBrainz::Server::Data::Country->_get_by_keys_append_sql 0.00242 |
|||
MusicBrainz::Server::Data::ArtistType->_get_by_keys_append_sql 0.00237 |
|||
MusicBrainz::Server::Data::ArtistCredit->_add_to_cache 0.00231 |
|||
MusicBrainz::Server::Data::LinkType->load 0.00222 |
|||
MusicBrainz::Server::Data::Artist->get_by_gid 0.00217 |
|||
MusicBrainz::Server::Data::Link->load 0.00176 |
|||
MusicBrainz::Server::Data::Relationship->load_entities 0.00172 |
|||
MusicBrainz::Server::Data::ReleaseGroupSecondaryType->load_for_release_groups 0.00169 |
|||
MusicBrainz::Server::Data::LinkType->get_by_ids 0.00166 |
|||
MusicBrainz::Server::Data::IPI->find_by_entity_id 0.00161 |
|||
MusicBrainz::Server::Data::Editor->_new_from_row 0.00150 |
|||
MusicBrainz::Server::Data::ReleaseGroup->_new_from_row 0.00110 |
|||
MusicBrainz::Server::Data::Link->get_by_ids 0.00107 |
|||
MusicBrainz::Server::Data::Link->_add_to_cache 0.00093 |
|||
MusicBrainz::Server::Data::LinkType->_add_to_cache 0.00070 |
|||
MusicBrainz::Server::Data::Relationship->load_subset 0.00064 |
|||
MusicBrainz::Server::Data::URL->_entity_class 0.00057 |
|||
MusicBrainz::Server::Data::Editor->load 0.00050 |
|||
MusicBrainz::Server::Data::Country->get_by_ids 0.00050 |
|||
MusicBrainz::Server::Data::Artist->_build_tags 0.00048 |
|||
MusicBrainz::Server::Data::Country->load 0.00044 |
|||
MusicBrainz::Server::Data::ArtistType->get_by_ids 0.00044 |
|||
MusicBrainz::Server::Data::EntityTag->_new_from_row 0.00042 |
|||
MusicBrainz::Server::Data::Gender->load 0.00041 |
|||
MusicBrainz::Server::Data::Gender->_add_to_cache 0.00039 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->_add_to_cache 0.00039 |
|||
MusicBrainz::Server::Data::Country->_add_to_cache 0.00038 |
|||
MusicBrainz::Server::Data::ReleaseGroup->_column_mapping 0.00038 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->get_by_ids 0.00037 |
|||
MusicBrainz::Server::Data::Gender->get_by_ids 0.00036 |
|||
MusicBrainz::Server::Data::ArtistType->_add_to_cache 0.00035 |
|||
MusicBrainz::Server::Data::ArtistType->load 0.00031 |
|||
MusicBrainz::Server::Data::Entity->get_by_ids 0.00026 |
|||
MusicBrainz::Server::Data::Country->_new_from_row 0.00024 |
|||
MusicBrainz::Server::Data::URL->_new_from_row 0.00021 |
|||
MusicBrainz::Server::Data::IPI->isa 0.00019 |
|||
MusicBrainz::Server::Data::ReleaseGroup->_entity_class 0.00018 |
|||
MusicBrainz::Server::Data::Entity->_get_by_keys 0.00017 |
|||
MusicBrainz::Server::Data::CoreEntity->get_by_ids 0.00017 |
|||
MusicBrainz::Server::Data::URL->_column_mapping 0.00016 |
|||
MusicBrainz::Server::Data::ArtistType->_new_from_row 0.00014 |
|||
MusicBrainz::Server::Data::Editor->get_by_ids 0.00013 |
|||
MusicBrainz::Server::Data::CoreEntity->get_by_gid 0.00012 |
|||
MusicBrainz::Server::Data::Artist->annotation 0.00011 |
|||
MusicBrainz::Server::Data::LinkType->_id_column 0.00011 |
|||
MusicBrainz::Server::Data::IPI->load_for 0.00011 |
|||
MusicBrainz::Server::Data::Editor->_get_by_keys 0.00010 |
|||
MusicBrainz::Server::Data::Entity->isa 0.00009 |
|||
MusicBrainz::Server::Data::Artist->_build_annotation_data 0.00009 |
|||
MusicBrainz::Server::Data::ArtistCredit->_id_cache_prefix 0.00008 |
|||
MusicBrainz::Server::Data::Artist->ipi 0.00008 |
|||
MusicBrainz::Server::Data::Country->_get_by_keys 0.00007 |
|||
MusicBrainz::Server::Data::Artist->_column_mapping 0.00007 |
|||
MusicBrainz::Server::Data::URL->get_by_ids 0.00007 |
|||
MusicBrainz::Server::Data::CoreEntity->_get_by_keys 0.00006 |
|||
MusicBrainz::Server::Data::Artist->_get_by_keys 0.00006 |
|||
MusicBrainz::Server::Data::RateLimiter->check_rate_limit 0.00006 |
|||
MusicBrainz::Server::Data::LinkType->_id_cache_prefix 0.00006 |
|||
MusicBrainz::Server::Data::IPI->type 0.00006 |
|||
MusicBrainz::Server::Data::Artist->tags 0.00006 |
|||
MusicBrainz::Server::Data::Gender->_new_from_row 0.00006 |
|||
MusicBrainz::Server::Model::MB->context 0.00005 |
|||
MusicBrainz::Server::Data::URL->_id_column 0.00005 |
|||
MusicBrainz::Server::Data::EntityTag->tag_table 0.00005 |
|||
MusicBrainz::Server::Data::URL->_get_by_keys_append_sql 0.00005 |
|||
MusicBrainz::Server::Data::LinkType->_column_mapping 0.00005 |
|||
MusicBrainz::Server::Data::EntityTag->type 0.00005 |
|||
MusicBrainz::Server::Data::Editor->_column_mapping 0.00005 |
|||
MusicBrainz::Server::Data::LinkType->_new_from_row 0.00004 |
|||
MusicBrainz::Server::Data::Link->_id_cache_prefix 0.00004 |
|||
MusicBrainz::Server::Data::Gender->_get_by_keys_append_sql 0.00004 |
|||
MusicBrainz::Server::Data::Link->_new_from_row 0.00004 |
|||
MusicBrainz::Server::Data::Gender->_get_by_keys 0.00004 |
|||
MusicBrainz::Server::Data::URL->_get_by_keys 0.00004 |
|||
MusicBrainz::Server::Data::LinkType->_get_by_keys_append_sql 0.00004 |
|||
MusicBrainz::Server::Data::Gender->_column_mapping 0.00004 |
|||
MusicBrainz::Server::Data::Link->_get_by_keys 0.00003 |
|||
MusicBrainz::Server::Data::CoreEntity->_column_mapping 0.00003 |
|||
MusicBrainz::Server::Data::RateLimiter->get_socket 0.00003 |
|||
MusicBrainz::Server::Data::ArtistType->_get_by_keys 0.00003 |
|||
MusicBrainz::Server::Data::Link->_get_by_keys_append_sql 0.00003 |
|||
MusicBrainz::Server::Data::LinkType->_get_by_keys 0.00003 |
|||
MusicBrainz::Server::Data::Country->_id_cache_prefix 0.00003 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->_id_column 0.00003 |
|||
MusicBrainz::Server::Data::Artist->_id_cache_prefix 0.00003 |
|||
MusicBrainz::Server::Data::Link->_id_column 0.00003 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->_new_from_row 0.00002 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->_get_by_keys_append_sql 0.00002 |
|||
MusicBrainz::Server::Data::Entity->_id_column 0.00002 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->_get_by_keys 0.00002 |
|||
MusicBrainz::Server::Data::Entity->_column_mapping 0.00002 |
|||
MusicBrainz::Server::Data::Artist->isa 0.00002 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->_column_mapping 0.00002 |
|||
MusicBrainz::Server::Data::Gender->_id_column 0.00002 |
|||
MusicBrainz::Server::Data::ReleaseGroup->_columns 0.00002 |
|||
MusicBrainz::Server::Data::Artist->_entity_class 0.00002 |
|||
MusicBrainz::Server::Data::URL->_columns 0.00002 |
|||
MusicBrainz::Server::Data::Link->_column_mapping 0.00002 |
|||
MusicBrainz::Server::Data::Country->_id_column 0.00002 |
|||
MusicBrainz::Server::Data::ReleaseGroup->_table 0.00002 |
|||
MusicBrainz::Server::Data::Country->_columns 0.00002 |
|||
MusicBrainz::Server::Data::Gender->_id_cache_prefix 0.00002 |
|||
MusicBrainz::Server::Data::IPI->_table 0.00002 |
|||
MusicBrainz::Server::Data::Country->_table 0.00002 |
|||
MusicBrainz::Server::Data::Country->_entity_class 0.00001 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->_id_cache_prefix 0.00001 |
|||
MusicBrainz::Server::Data::IPI->_columns 0.00001 |
|||
MusicBrainz::Server::Data::URL->_table 0.00001 |
|||
MusicBrainz::Server::Data::LinkType->_columns 0.00001 |
|||
MusicBrainz::Server::Data::Link->_entity_class 0.00001 |
|||
MusicBrainz::Server::Data::ArtistType->_id_cache_prefix 0.00001 |
|||
MusicBrainz::Server::Data::Artist->_columns 0.00001 |
|||
MusicBrainz::Server::Data::Artist->_table 0.00001 |
|||
MusicBrainz::Server::Data::Gender->_entity_class 0.00001 |
|||
MusicBrainz::Server::Data::LinkType->_entity_class 0.00001 |
|||
MusicBrainz::Server::Data::Gender->_columns 0.00001 |
|||
MusicBrainz::Server::Data::CoreEntity->_id_column 0.00001 |
|||
MusicBrainz::Server::Data::LinkType->_table 0.00001 |
|||
MusicBrainz::Server::Data::Country->_column_mapping 0.00001 |
|||
MusicBrainz::Server::Data::Link->_table 0.00001 |
|||
MusicBrainz::Server::Data::Gender->_table 0.00001 |
|||
MusicBrainz::Server::Data::Editor->_columns 0.00001 |
|||
MusicBrainz::Server::Data::ArtistType->_table 0.00001 |
|||
MusicBrainz::Server::Data::ArtistType->_id_column 0.00001 |
|||
MusicBrainz::Server::Data::ArtistType->_column_mapping 0.00001 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->_entity_class 0.00000 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->_table 0.00000 |
|||
MusicBrainz::Server::Data::Editor->_entity_class 0.00000 |
|||
MusicBrainz::Server::Data::ArtistType->_columns 0.00000 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->_columns 0.00000 |
|||
MusicBrainz::Server::Data::ArtistType->_entity_class 0.00000 |
|||
MusicBrainz::Server::Data::Link->_columns 0.00000 |
|||
MusicBrainz::Server::Data::Editor->_id_column 0.00000 |
|||
MusicBrainz::Server::Data::Editor->_table 0.00000</nowiki> |
|||
===== FreeBSD Test ====== |
|||
<nowiki>FreeBSD Environment: 9.0-RELEASE, GENERIC kernel, Perl 5.14.2 (built from ports) |
|||
First Operation: 579.662ms |
|||
Key Value |
|||
MusicBrainz::Server::Data::Search->external_search 0.18266 |
|||
MusicBrainz::Server::Data::Country->_get_by_key 0.02097 |
|||
MusicBrainz::Server::Data::FileCache->manifest_files 0.01045 |
|||
MusicBrainz::Server::Data::Search->schema_fixup 0.00560 |
|||
MusicBrainz::Server::Data::Country->_new_from_row 0.00099 |
|||
MusicBrainz::Server::Data::Country->find_by_code 0.00046 |
|||
MusicBrainz::Server::Data::Country->_table 0.00008 |
|||
MusicBrainz::Server::Model::MB->context 0.00006 |
|||
MusicBrainz::Server::Data::Country->_columns 0.00006 |
|||
MusicBrainz::Server::Data::RateLimiter->check_rate_limit 0.00005 |
|||
MusicBrainz::Server::Data::Country->_column_mapping 0.00004 |
|||
MusicBrainz::Server::Data::Country->_entity_class 0.00004 |
|||
MusicBrainz::Server::Data::RateLimiter->get_socket 0.00003 |
|||
MusicBrainz::Server::Data::Artist->_entity_class 0.00002 |
|||
Second Operation: 773.972ms |
|||
Key Value |
|||
MusicBrainz::Server::Data::ReleaseGroup->find_by_artist 0.33772 |
|||
MusicBrainz::Server::Data::CoreEntity->_new_from_row 0.02965 |
|||
MusicBrainz::Server::Data::EntityTag->find_top_tags 0.02328 |
|||
MusicBrainz::Server::Data::FileCache->manifest_files 0.01057 |
|||
MusicBrainz::Server::Data::ArtistCredit->load 0.00660 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->load 0.00631 |
|||
MusicBrainz::Server::Data::Relationship->_load 0.00572 |
|||
MusicBrainz::Server::Data::Artist->is_empty 0.00483 |
|||
MusicBrainz::Server::Data::Relationship->_new_from_row 0.00425 |
|||
MusicBrainz::Server::Data::Editor->_get_by_keys_append_sql 0.00327 |
|||
MusicBrainz::Server::Data::Editor->load_preferences 0.00286 |
|||
MusicBrainz::Server::Data::CoreEntity->_get_by_keys_append_sql 0.00207 |
|||
MusicBrainz::Server::Data::ReleaseGroupSecondaryType->load_for_release_groups 0.00206 |
|||
MusicBrainz::Server::Data::EntityTag->find_tag_count 0.00205 |
|||
MusicBrainz::Server::Data::Entity->_new_from_row 0.00205 |
|||
MusicBrainz::Server::Data::IPI->find_by_entity_id 0.00181 |
|||
MusicBrainz::Server::Data::Editor->_new_from_row 0.00175 |
|||
MusicBrainz::Server::Data::Artist->load_meta 0.00151 |
|||
MusicBrainz::Server::Data::LinkType->load 0.00133 |
|||
MusicBrainz::Server::Data::ReleaseGroup->_new_from_row 0.00132 |
|||
MusicBrainz::Server::Data::Relationship->load_entities 0.00128 |
|||
MusicBrainz::Server::Data::Artist->get_by_ids 0.00126 |
|||
MusicBrainz::Server::Data::Link->load 0.00122 |
|||
MusicBrainz::Server::Data::ArtistCredit->get_by_ids 0.00102 |
|||
MusicBrainz::Server::Data::LinkType->get_by_ids 0.00069 |
|||
MusicBrainz::Server::Data::Link->get_by_ids 0.00065 |
|||
MusicBrainz::Server::Data::Artist->get_by_gid 0.00054 |
|||
MusicBrainz::Server::Data::Relationship->load_subset 0.00048 |
|||
MusicBrainz::Server::Data::ArtistType->get_by_ids 0.00045 |
|||
MusicBrainz::Server::Data::URL->_entity_class 0.00044 |
|||
MusicBrainz::Server::Data::ReleaseGroup->_column_mapping 0.00043 |
|||
MusicBrainz::Server::Data::Editor->load 0.00039 |
|||
MusicBrainz::Server::Data::ArtistType->load 0.00035 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->get_by_ids 0.00031 |
|||
MusicBrainz::Server::Data::EntityTag->_new_from_row 0.00027 |
|||
MusicBrainz::Server::Data::Country->get_by_ids 0.00026 |
|||
MusicBrainz::Server::Data::Country->load 0.00026 |
|||
MusicBrainz::Server::Data::Gender->load 0.00025 |
|||
MusicBrainz::Server::Data::Gender->get_by_ids 0.00025 |
|||
MusicBrainz::Server::Data::ReleaseGroup->_entity_class 0.00023 |
|||
MusicBrainz::Server::Data::URL->_new_from_row 0.00021 |
|||
MusicBrainz::Server::Data::URL->_column_mapping 0.00016 |
|||
MusicBrainz::Server::Data::CoreEntity->get_by_ids 0.00013 |
|||
MusicBrainz::Server::Data::IPI->load_for 0.00012 |
|||
MusicBrainz::Server::Data::Editor->get_by_ids 0.00011 |
|||
MusicBrainz::Server::Data::Editor->_get_by_keys 0.00008 |
|||
MusicBrainz::Server::Data::IPI->type 0.00008 |
|||
MusicBrainz::Server::Model::MB->context 0.00007 |
|||
MusicBrainz::Server::Data::Artist->annotation 0.00007 |
|||
MusicBrainz::Server::Data::URL->get_by_ids 0.00006 |
|||
MusicBrainz::Server::Data::Artist->get_by_id 0.00006 |
|||
MusicBrainz::Server::Data::RateLimiter->check_rate_limit 0.00005 |
|||
MusicBrainz::Server::Data::EntityTag->tag_table 0.00005 |
|||
MusicBrainz::Server::Data::Link->_id_cache_prefix 0.00005 |
|||
MusicBrainz::Server::Data::CoreEntity->_get_by_keys 0.00004 |
|||
MusicBrainz::Server::Data::ArtistCredit->_id_cache_prefix 0.00004 |
|||
MusicBrainz::Server::Data::EntityTag->type 0.00004 |
|||
MusicBrainz::Server::Data::URL->_get_by_keys_append_sql 0.00004 |
|||
MusicBrainz::Server::Data::Artist->tags 0.00004 |
|||
MusicBrainz::Server::Data::URL->_get_by_keys 0.00003 |
|||
MusicBrainz::Server::Data::Country->_id_cache_prefix 0.00003 |
|||
MusicBrainz::Server::Data::URL->_id_column 0.00003 |
|||
MusicBrainz::Server::Data::LinkType->_id_cache_prefix 0.00003 |
|||
MusicBrainz::Server::Data::CoreEntity->_column_mapping 0.00003 |
|||
MusicBrainz::Server::Data::Editor->_column_mapping 0.00003 |
|||
MusicBrainz::Server::Data::Artist->_id_cache_prefix 0.00003 |
|||
MusicBrainz::Server::Data::RateLimiter->get_socket 0.00003 |
|||
MusicBrainz::Server::Data::Artist->ipi 0.00003 |
|||
MusicBrainz::Server::Data::IPI->_columns 0.00002 |
|||
MusicBrainz::Server::Data::IPI->_table 0.00002 |
|||
MusicBrainz::Server::Data::ReleaseGroupType->_id_cache_prefix 0.00001 |
|||
MusicBrainz::Server::Data::ReleaseGroup->_table 0.00001 |
|||
MusicBrainz::Server::Data::ArtistType->_id_cache_prefix 0.00001 |
|||
MusicBrainz::Server::Data::Gender->_id_cache_prefix 0.00001 |
|||
MusicBrainz::Server::Data::URL->_columns 0.00001 |
|||
MusicBrainz::Server::Data::Editor->_columns 0.00001 |
|||
MusicBrainz::Server::Data::ReleaseGroup->_columns 0.00001 |
|||
MusicBrainz::Server::Data::URL->_table 0.00001 |
|||
MusicBrainz::Server::Data::CoreEntity->_id_column 0.00001 |
|||
MusicBrainz::Server::Data::Editor->_id_column 0.00001 |
|||
MusicBrainz::Server::Data::Editor->_entity_class 0.00001 |
|||
MusicBrainz::Server::Data::Editor->_table 0.00001</nowiki> |
Latest revision as of 01:17, 17 September 2012
Configuring MusicBrainz Server on FreeBSD 8.x and 9.x
What you'll need:
- FreeBSD 8.x or FreeBSD 9.x with root or sudo access
- Optionally, the ability to create a new user as well.
- An up to date ports tree
- Some very basic Perl and shell scripting (at this time)
First Steps
First, you'll need to add or choose a user to run the MusicBrainz Server as. The username and group doesn't matter too much (don't put them in wheel obviously.) Never run the server as root.
Ensure your ports tree is up to date (either using portsnap update or csup.) You must build some packages from ports to ensure options are set correctly. The options presented are intended for a 'bare minimums' install.
It is very important that you follow the steps in this guide in the exact order in which they are written. If you build things out of order, this can result in options being set incorrectly or dependencies not being installed correctly.
Local Database Server - Building Ports
- bash shell - use defaults when prompted by dependencies.
cd /usr/ports/shells/bash && make install OPTIONALLY: pkg_add -r bash
- Perl 5.14
cd /usr/ports/lang/perl5.14 make -DWITH_SITECUSTOMIZE install
- PostgreSQL 9.1 - gcc, ICC; clang builds should omit -DWITH_OPTIMIZED_CFLAGS for now.
cd /usr/ports/databases/postgresql91-server make -DWITH_NLS -DWITH_OPTIMIZED_CFLAGS -DWITH_XML -DWITH_TZDATA -DWITH_INTDATE -DWITH_SSL make install cd /usr/ports/databases/postgresql91-contrib make install cd /usr/ports/databases/postgresql91-plperl make install
- Memcached - use defaults (No REPCACHED, No SASL)
cd /usr/ports/databases/memcached && make install
- Git
Ensure only the following options are selected:
- CONTRIB
- ETCSHELLS
- ICONV
- NLS
- PERL
cd /usr/ports/devel/git make config -- this is where you select options make install
- GNU Make
cd /usr/ports/devel/gmake && make install
- expat libraries
cd /usr/ports/textproc/expat2 && make install
- Gnome XML libraries (libxml2)
cd /usr/ports/textproc/libxml2 && make install
- Carton - this will pull in a number of Perl dependencies as well
cd /usr/ports/devel/p5-carton && make install
- DBD::Pg - this must be installed
cd /usr/ports/databases/p5-DBD-Pg && make install
At this point, you should now add any additional packages you desire for flavor (such as editors, additional shells, interpreters and so on.)
Remote Database Server - Building Ports
This is for configurations where the database will reside on a separate system. You will need to know how to use scp, and also to consult the documentation for your database system to ensure you have the correct packages and libraries installed and have configured Memcached correctly. No assumptions are made about PostgreSQL version or host operating system for the remote server in this scenario.
- bash shell - use defaults when prompted by dependencies.
cd /usr/ports/shells/bash && make install OPTIONALLY: pkg_add -r bash
- Perl 5.14
cd /usr/ports/lang/perl5.14 make -Dusesitecustomize install
- PostgreSQL 9.1 - gcc, ICC; clang builds should omit -DWITH_OPTIMIZED_CFLAGS for now.
cd /usr/ports/databases/postgresql91-client make -DWITH_NLS -DWITH_OPTIMIZED_CFLAGS -DWITH_XML -DWITH_TZDATA -DWITH_INTDATE -DWITH_SSL make install
- Git
Ensure only the following options are selected:
CONTRIB, ETCSHELLS, ICONV, NLS, PERL
This will also pull in Python and IO::Socket::SSL - the default options should be accepted when prompted.
cd /usr/ports/devel/git make config -- this is where you select options make install
- expat libraries
cd /usr/ports/textproc/expat2 && make install
- Carton - this will pull in a number of Perl dependencies as well
cd /usr/ports/devel/p5-carton && make install
- DBD::Pg - this must be installed
cd /usr/ports/databases/p5-DBD-Pg && make install
At this point, you should now add any additional packages you desire for flavor (such as editors, additional shells, interpreters and so on.)
Setting up the MusicBrainz Server
You must change the default shell for the musicbrainz user to /usr/local/bin/bash and ensure this user's .bash_login includes a path statement which includes /usr/local/bin:/usr/local/sbin.
Change to the user which you will run musicbrainz-server as.
Clone the current Git repository:
git clone git://git.musicbrainz.org/musicbrainz-server.git
Now perform FreeBSD specific configuration for your .gitignore file.
echo "/admin/cron/freebsd*" >> musicbrainz-server/.gitignore
NOTE: This is a temporary solution until the various cron scripts are fixed to be path neutral.
You will now need to perform more than a little dancing with Carton to ensure packages are installed correctly. And yes, it is necessary to run 'install --deployment' twice.
cd musicbrainz-server carton install --deployment carton install --deployment cp carton.lock carton.lock.save carton install DateTime::Set DateTime::Event::ICal carton install Catalyst::Runtime Catalyst::Plugin::AutoRestart carton install REST::Utils Function::Parameters carton install XML::Parser::Lite
Installation is now complete. You should configure MusicBrainz Server as you would on any other system.
Configuring crontab for a MusicBrainz Slave
You will need a separate crontab script which is path neutral for operating a MusicBrainz Slave server on FreeBSD, which is currently not in git.
Install /usr/ports/sysutils/logrotate either by building or by using pkg_add -r logrotate
Create the file musicbrainz-server/admin/cron/freebsd_slave.sh:
#!/usr/local/bin/bash PATH="$PATH:/usr/local/bin:/usr/local/sbin" mb_server=`dirname $0`/../.. cd $mb_server eval `carton exec -- ./admin/ShowDBDefs` carton exec -- ./admin/config.sh X=${SLAVE_LOG:=$MB_SERVER_ROOT/slave.log} X=${LOGROTATE:=logrotate --state $MB_SERVER_ROOT/.logrotate-state} carton exec -- ./admin/replication/LoadReplicationChanges >> $SLAVE_LOG 2>&1 || { RC=$? echo `date`" : LoadReplicationChanges failed (rc=$RC) - see $SLAVE_LOG" } $LOGROTATE /dev/stdin <<EOF $SLAVE_LOG { daily rotate 30 } EOF #eof
Then perform chmod +x musicbrainz-server/admin/cron/freebsd_slave.sh followed by crontab -e as the user running the MusicBrainz Server. This example runs every 2 hours at 35 minutes past the hour.
#Crontab for MusicBrainz Server Slave on FreeBSD #Min Hr MDay Month WDay Command 35 */2 * * * ~/musicbrainz-server/admin/cron/freebsd_slave.sh
Performance on FreeBSD
MusicBrainz Server
For Perl instances, performance on FreeBSD is generally equal to that of Linux. Non-exhaustive testing has indicated that FreeBSD may be slightly faster on like-for-like hardware configurations, but the difference is generally ~20ms or less on most queries. However, particularly complex queries may demonstrate exponential and repeatable performance gains on FreeBSD.
Test Environment: BabyDragon (X3450, VMware ESXi 4.0U3) - no CPU restriction, 512MB memory, remote PostgreSQL 9.1.4.
Test Query: Search for "Beethoven," click "Ludwig van Beethoven"
Notes: Database was shut down, all buffers and cache were flushed, and restarted between each test.
Linux Test
Linux Environment: Debian wheezy/sid, kernel 3.2.0-3-PAE, Perl 5.14.2 First Operation, 597.551ms: Key Value MusicBrainz::Server::Data::Search->external_search 0.23721 MusicBrainz::Server::Data::Country->_get_by_key 0.05206 MusicBrainz::Server::Data::FileCache->manifest_files 0.00812 MusicBrainz::Server::Data::Search->schema_fixup 0.00667 MusicBrainz::Server::Data::Country->_new_from_row 0.00100 MusicBrainz::Server::Data::Country->find_by_code 0.00044 MusicBrainz::Server::Data::RateLimiter->check_rate_limit 0.00008 MusicBrainz::Server::Model::MB->context 0.00006 MusicBrainz::Server::Data::Country->_columns 0.00005 MusicBrainz::Server::Data::RateLimiter->get_socket 0.00005 MusicBrainz::Server::Data::Country->_entity_class 0.00005 MusicBrainz::Server::Data::Country->_column_mapping 0.00004 MusicBrainz::Server::Data::Country->_table 0.00004 MusicBrainz::Server::Data::Artist->_entity_class 0.00001 Second Operation, 13652.024ms: Key Value MusicBrainz::Server::Data::ReleaseGroup->find_by_artist 10.98394 MusicBrainz::Server::Data::ArtistCredit->get_by_ids 0.90881 MusicBrainz::Server::Data::Relationship->_load 0.25070 MusicBrainz::Server::Data::Artist->_get_by_keys_append_sql 0.22249 MusicBrainz::Server::Data::EntityTag->find_top_tags 0.18149 MusicBrainz::Server::Data::Editor->_get_by_keys_append_sql 0.15582 MusicBrainz::Server::Data::CoreEntity->_new_from_row 0.10296 MusicBrainz::Server::Data::Editor->load_preferences 0.06356 MusicBrainz::Server::Data::Link->_load_attributes 0.05785 MusicBrainz::Server::Data::Entity->_get_by_keys_append_sql 0.04327 MusicBrainz::Server::Data::LinkType->_load_attributes 0.01533 MusicBrainz::Server::Data::Artist->load_meta 0.01356 MusicBrainz::Server::Data::Artist->is_empty 0.01314 MusicBrainz::Server::Data::Artist->_build_ipi 0.00867 MusicBrainz::Server::Data::ReleaseGroupType->load 0.00852 MusicBrainz::Server::Data::FileCache->manifest_files 0.00833 MusicBrainz::Server::Data::ArtistCredit->load 0.00619 MusicBrainz::Server::Data::Artist->_new_from_row 0.00526 MusicBrainz::Server::Data::EntityTag->find_tag_count 0.00506 MusicBrainz::Server::Data::Entity->_new_from_row 0.00410 MusicBrainz::Server::Data::Relationship->_new_from_row 0.00365 MusicBrainz::Server::Data::CoreEntity->_get_by_keys_append_sql 0.00290 MusicBrainz::Server::Data::Country->_get_by_keys_append_sql 0.00242 MusicBrainz::Server::Data::ArtistType->_get_by_keys_append_sql 0.00237 MusicBrainz::Server::Data::ArtistCredit->_add_to_cache 0.00231 MusicBrainz::Server::Data::LinkType->load 0.00222 MusicBrainz::Server::Data::Artist->get_by_gid 0.00217 MusicBrainz::Server::Data::Link->load 0.00176 MusicBrainz::Server::Data::Relationship->load_entities 0.00172 MusicBrainz::Server::Data::ReleaseGroupSecondaryType->load_for_release_groups 0.00169 MusicBrainz::Server::Data::LinkType->get_by_ids 0.00166 MusicBrainz::Server::Data::IPI->find_by_entity_id 0.00161 MusicBrainz::Server::Data::Editor->_new_from_row 0.00150 MusicBrainz::Server::Data::ReleaseGroup->_new_from_row 0.00110 MusicBrainz::Server::Data::Link->get_by_ids 0.00107 MusicBrainz::Server::Data::Link->_add_to_cache 0.00093 MusicBrainz::Server::Data::LinkType->_add_to_cache 0.00070 MusicBrainz::Server::Data::Relationship->load_subset 0.00064 MusicBrainz::Server::Data::URL->_entity_class 0.00057 MusicBrainz::Server::Data::Editor->load 0.00050 MusicBrainz::Server::Data::Country->get_by_ids 0.00050 MusicBrainz::Server::Data::Artist->_build_tags 0.00048 MusicBrainz::Server::Data::Country->load 0.00044 MusicBrainz::Server::Data::ArtistType->get_by_ids 0.00044 MusicBrainz::Server::Data::EntityTag->_new_from_row 0.00042 MusicBrainz::Server::Data::Gender->load 0.00041 MusicBrainz::Server::Data::Gender->_add_to_cache 0.00039 MusicBrainz::Server::Data::ReleaseGroupType->_add_to_cache 0.00039 MusicBrainz::Server::Data::Country->_add_to_cache 0.00038 MusicBrainz::Server::Data::ReleaseGroup->_column_mapping 0.00038 MusicBrainz::Server::Data::ReleaseGroupType->get_by_ids 0.00037 MusicBrainz::Server::Data::Gender->get_by_ids 0.00036 MusicBrainz::Server::Data::ArtistType->_add_to_cache 0.00035 MusicBrainz::Server::Data::ArtistType->load 0.00031 MusicBrainz::Server::Data::Entity->get_by_ids 0.00026 MusicBrainz::Server::Data::Country->_new_from_row 0.00024 MusicBrainz::Server::Data::URL->_new_from_row 0.00021 MusicBrainz::Server::Data::IPI->isa 0.00019 MusicBrainz::Server::Data::ReleaseGroup->_entity_class 0.00018 MusicBrainz::Server::Data::Entity->_get_by_keys 0.00017 MusicBrainz::Server::Data::CoreEntity->get_by_ids 0.00017 MusicBrainz::Server::Data::URL->_column_mapping 0.00016 MusicBrainz::Server::Data::ArtistType->_new_from_row 0.00014 MusicBrainz::Server::Data::Editor->get_by_ids 0.00013 MusicBrainz::Server::Data::CoreEntity->get_by_gid 0.00012 MusicBrainz::Server::Data::Artist->annotation 0.00011 MusicBrainz::Server::Data::LinkType->_id_column 0.00011 MusicBrainz::Server::Data::IPI->load_for 0.00011 MusicBrainz::Server::Data::Editor->_get_by_keys 0.00010 MusicBrainz::Server::Data::Entity->isa 0.00009 MusicBrainz::Server::Data::Artist->_build_annotation_data 0.00009 MusicBrainz::Server::Data::ArtistCredit->_id_cache_prefix 0.00008 MusicBrainz::Server::Data::Artist->ipi 0.00008 MusicBrainz::Server::Data::Country->_get_by_keys 0.00007 MusicBrainz::Server::Data::Artist->_column_mapping 0.00007 MusicBrainz::Server::Data::URL->get_by_ids 0.00007 MusicBrainz::Server::Data::CoreEntity->_get_by_keys 0.00006 MusicBrainz::Server::Data::Artist->_get_by_keys 0.00006 MusicBrainz::Server::Data::RateLimiter->check_rate_limit 0.00006 MusicBrainz::Server::Data::LinkType->_id_cache_prefix 0.00006 MusicBrainz::Server::Data::IPI->type 0.00006 MusicBrainz::Server::Data::Artist->tags 0.00006 MusicBrainz::Server::Data::Gender->_new_from_row 0.00006 MusicBrainz::Server::Model::MB->context 0.00005 MusicBrainz::Server::Data::URL->_id_column 0.00005 MusicBrainz::Server::Data::EntityTag->tag_table 0.00005 MusicBrainz::Server::Data::URL->_get_by_keys_append_sql 0.00005 MusicBrainz::Server::Data::LinkType->_column_mapping 0.00005 MusicBrainz::Server::Data::EntityTag->type 0.00005 MusicBrainz::Server::Data::Editor->_column_mapping 0.00005 MusicBrainz::Server::Data::LinkType->_new_from_row 0.00004 MusicBrainz::Server::Data::Link->_id_cache_prefix 0.00004 MusicBrainz::Server::Data::Gender->_get_by_keys_append_sql 0.00004 MusicBrainz::Server::Data::Link->_new_from_row 0.00004 MusicBrainz::Server::Data::Gender->_get_by_keys 0.00004 MusicBrainz::Server::Data::URL->_get_by_keys 0.00004 MusicBrainz::Server::Data::LinkType->_get_by_keys_append_sql 0.00004 MusicBrainz::Server::Data::Gender->_column_mapping 0.00004 MusicBrainz::Server::Data::Link->_get_by_keys 0.00003 MusicBrainz::Server::Data::CoreEntity->_column_mapping 0.00003 MusicBrainz::Server::Data::RateLimiter->get_socket 0.00003 MusicBrainz::Server::Data::ArtistType->_get_by_keys 0.00003 MusicBrainz::Server::Data::Link->_get_by_keys_append_sql 0.00003 MusicBrainz::Server::Data::LinkType->_get_by_keys 0.00003 MusicBrainz::Server::Data::Country->_id_cache_prefix 0.00003 MusicBrainz::Server::Data::ReleaseGroupType->_id_column 0.00003 MusicBrainz::Server::Data::Artist->_id_cache_prefix 0.00003 MusicBrainz::Server::Data::Link->_id_column 0.00003 MusicBrainz::Server::Data::ReleaseGroupType->_new_from_row 0.00002 MusicBrainz::Server::Data::ReleaseGroupType->_get_by_keys_append_sql 0.00002 MusicBrainz::Server::Data::Entity->_id_column 0.00002 MusicBrainz::Server::Data::ReleaseGroupType->_get_by_keys 0.00002 MusicBrainz::Server::Data::Entity->_column_mapping 0.00002 MusicBrainz::Server::Data::Artist->isa 0.00002 MusicBrainz::Server::Data::ReleaseGroupType->_column_mapping 0.00002 MusicBrainz::Server::Data::Gender->_id_column 0.00002 MusicBrainz::Server::Data::ReleaseGroup->_columns 0.00002 MusicBrainz::Server::Data::Artist->_entity_class 0.00002 MusicBrainz::Server::Data::URL->_columns 0.00002 MusicBrainz::Server::Data::Link->_column_mapping 0.00002 MusicBrainz::Server::Data::Country->_id_column 0.00002 MusicBrainz::Server::Data::ReleaseGroup->_table 0.00002 MusicBrainz::Server::Data::Country->_columns 0.00002 MusicBrainz::Server::Data::Gender->_id_cache_prefix 0.00002 MusicBrainz::Server::Data::IPI->_table 0.00002 MusicBrainz::Server::Data::Country->_table 0.00002 MusicBrainz::Server::Data::Country->_entity_class 0.00001 MusicBrainz::Server::Data::ReleaseGroupType->_id_cache_prefix 0.00001 MusicBrainz::Server::Data::IPI->_columns 0.00001 MusicBrainz::Server::Data::URL->_table 0.00001 MusicBrainz::Server::Data::LinkType->_columns 0.00001 MusicBrainz::Server::Data::Link->_entity_class 0.00001 MusicBrainz::Server::Data::ArtistType->_id_cache_prefix 0.00001 MusicBrainz::Server::Data::Artist->_columns 0.00001 MusicBrainz::Server::Data::Artist->_table 0.00001 MusicBrainz::Server::Data::Gender->_entity_class 0.00001 MusicBrainz::Server::Data::LinkType->_entity_class 0.00001 MusicBrainz::Server::Data::Gender->_columns 0.00001 MusicBrainz::Server::Data::CoreEntity->_id_column 0.00001 MusicBrainz::Server::Data::LinkType->_table 0.00001 MusicBrainz::Server::Data::Country->_column_mapping 0.00001 MusicBrainz::Server::Data::Link->_table 0.00001 MusicBrainz::Server::Data::Gender->_table 0.00001 MusicBrainz::Server::Data::Editor->_columns 0.00001 MusicBrainz::Server::Data::ArtistType->_table 0.00001 MusicBrainz::Server::Data::ArtistType->_id_column 0.00001 MusicBrainz::Server::Data::ArtistType->_column_mapping 0.00001 MusicBrainz::Server::Data::ReleaseGroupType->_entity_class 0.00000 MusicBrainz::Server::Data::ReleaseGroupType->_table 0.00000 MusicBrainz::Server::Data::Editor->_entity_class 0.00000 MusicBrainz::Server::Data::ArtistType->_columns 0.00000 MusicBrainz::Server::Data::ReleaseGroupType->_columns 0.00000 MusicBrainz::Server::Data::ArtistType->_entity_class 0.00000 MusicBrainz::Server::Data::Link->_columns 0.00000 MusicBrainz::Server::Data::Editor->_id_column 0.00000 MusicBrainz::Server::Data::Editor->_table 0.00000
FreeBSD Test =
FreeBSD Environment: 9.0-RELEASE, GENERIC kernel, Perl 5.14.2 (built from ports) First Operation: 579.662ms Key Value MusicBrainz::Server::Data::Search->external_search 0.18266 MusicBrainz::Server::Data::Country->_get_by_key 0.02097 MusicBrainz::Server::Data::FileCache->manifest_files 0.01045 MusicBrainz::Server::Data::Search->schema_fixup 0.00560 MusicBrainz::Server::Data::Country->_new_from_row 0.00099 MusicBrainz::Server::Data::Country->find_by_code 0.00046 MusicBrainz::Server::Data::Country->_table 0.00008 MusicBrainz::Server::Model::MB->context 0.00006 MusicBrainz::Server::Data::Country->_columns 0.00006 MusicBrainz::Server::Data::RateLimiter->check_rate_limit 0.00005 MusicBrainz::Server::Data::Country->_column_mapping 0.00004 MusicBrainz::Server::Data::Country->_entity_class 0.00004 MusicBrainz::Server::Data::RateLimiter->get_socket 0.00003 MusicBrainz::Server::Data::Artist->_entity_class 0.00002 Second Operation: 773.972ms Key Value MusicBrainz::Server::Data::ReleaseGroup->find_by_artist 0.33772 MusicBrainz::Server::Data::CoreEntity->_new_from_row 0.02965 MusicBrainz::Server::Data::EntityTag->find_top_tags 0.02328 MusicBrainz::Server::Data::FileCache->manifest_files 0.01057 MusicBrainz::Server::Data::ArtistCredit->load 0.00660 MusicBrainz::Server::Data::ReleaseGroupType->load 0.00631 MusicBrainz::Server::Data::Relationship->_load 0.00572 MusicBrainz::Server::Data::Artist->is_empty 0.00483 MusicBrainz::Server::Data::Relationship->_new_from_row 0.00425 MusicBrainz::Server::Data::Editor->_get_by_keys_append_sql 0.00327 MusicBrainz::Server::Data::Editor->load_preferences 0.00286 MusicBrainz::Server::Data::CoreEntity->_get_by_keys_append_sql 0.00207 MusicBrainz::Server::Data::ReleaseGroupSecondaryType->load_for_release_groups 0.00206 MusicBrainz::Server::Data::EntityTag->find_tag_count 0.00205 MusicBrainz::Server::Data::Entity->_new_from_row 0.00205 MusicBrainz::Server::Data::IPI->find_by_entity_id 0.00181 MusicBrainz::Server::Data::Editor->_new_from_row 0.00175 MusicBrainz::Server::Data::Artist->load_meta 0.00151 MusicBrainz::Server::Data::LinkType->load 0.00133 MusicBrainz::Server::Data::ReleaseGroup->_new_from_row 0.00132 MusicBrainz::Server::Data::Relationship->load_entities 0.00128 MusicBrainz::Server::Data::Artist->get_by_ids 0.00126 MusicBrainz::Server::Data::Link->load 0.00122 MusicBrainz::Server::Data::ArtistCredit->get_by_ids 0.00102 MusicBrainz::Server::Data::LinkType->get_by_ids 0.00069 MusicBrainz::Server::Data::Link->get_by_ids 0.00065 MusicBrainz::Server::Data::Artist->get_by_gid 0.00054 MusicBrainz::Server::Data::Relationship->load_subset 0.00048 MusicBrainz::Server::Data::ArtistType->get_by_ids 0.00045 MusicBrainz::Server::Data::URL->_entity_class 0.00044 MusicBrainz::Server::Data::ReleaseGroup->_column_mapping 0.00043 MusicBrainz::Server::Data::Editor->load 0.00039 MusicBrainz::Server::Data::ArtistType->load 0.00035 MusicBrainz::Server::Data::ReleaseGroupType->get_by_ids 0.00031 MusicBrainz::Server::Data::EntityTag->_new_from_row 0.00027 MusicBrainz::Server::Data::Country->get_by_ids 0.00026 MusicBrainz::Server::Data::Country->load 0.00026 MusicBrainz::Server::Data::Gender->load 0.00025 MusicBrainz::Server::Data::Gender->get_by_ids 0.00025 MusicBrainz::Server::Data::ReleaseGroup->_entity_class 0.00023 MusicBrainz::Server::Data::URL->_new_from_row 0.00021 MusicBrainz::Server::Data::URL->_column_mapping 0.00016 MusicBrainz::Server::Data::CoreEntity->get_by_ids 0.00013 MusicBrainz::Server::Data::IPI->load_for 0.00012 MusicBrainz::Server::Data::Editor->get_by_ids 0.00011 MusicBrainz::Server::Data::Editor->_get_by_keys 0.00008 MusicBrainz::Server::Data::IPI->type 0.00008 MusicBrainz::Server::Model::MB->context 0.00007 MusicBrainz::Server::Data::Artist->annotation 0.00007 MusicBrainz::Server::Data::URL->get_by_ids 0.00006 MusicBrainz::Server::Data::Artist->get_by_id 0.00006 MusicBrainz::Server::Data::RateLimiter->check_rate_limit 0.00005 MusicBrainz::Server::Data::EntityTag->tag_table 0.00005 MusicBrainz::Server::Data::Link->_id_cache_prefix 0.00005 MusicBrainz::Server::Data::CoreEntity->_get_by_keys 0.00004 MusicBrainz::Server::Data::ArtistCredit->_id_cache_prefix 0.00004 MusicBrainz::Server::Data::EntityTag->type 0.00004 MusicBrainz::Server::Data::URL->_get_by_keys_append_sql 0.00004 MusicBrainz::Server::Data::Artist->tags 0.00004 MusicBrainz::Server::Data::URL->_get_by_keys 0.00003 MusicBrainz::Server::Data::Country->_id_cache_prefix 0.00003 MusicBrainz::Server::Data::URL->_id_column 0.00003 MusicBrainz::Server::Data::LinkType->_id_cache_prefix 0.00003 MusicBrainz::Server::Data::CoreEntity->_column_mapping 0.00003 MusicBrainz::Server::Data::Editor->_column_mapping 0.00003 MusicBrainz::Server::Data::Artist->_id_cache_prefix 0.00003 MusicBrainz::Server::Data::RateLimiter->get_socket 0.00003 MusicBrainz::Server::Data::Artist->ipi 0.00003 MusicBrainz::Server::Data::IPI->_columns 0.00002 MusicBrainz::Server::Data::IPI->_table 0.00002 MusicBrainz::Server::Data::ReleaseGroupType->_id_cache_prefix 0.00001 MusicBrainz::Server::Data::ReleaseGroup->_table 0.00001 MusicBrainz::Server::Data::ArtistType->_id_cache_prefix 0.00001 MusicBrainz::Server::Data::Gender->_id_cache_prefix 0.00001 MusicBrainz::Server::Data::URL->_columns 0.00001 MusicBrainz::Server::Data::Editor->_columns 0.00001 MusicBrainz::Server::Data::ReleaseGroup->_columns 0.00001 MusicBrainz::Server::Data::URL->_table 0.00001 MusicBrainz::Server::Data::CoreEntity->_id_column 0.00001 MusicBrainz::Server::Data::Editor->_id_column 0.00001 MusicBrainz::Server::Data::Editor->_entity_class 0.00001 MusicBrainz::Server::Data::Editor->_table 0.00001