Вот они – мысл о вечном в 1:20 ночи. Ужасная скука, даже переустановка убунты не подняла мое настроение. Сегодня всю ночь занимался написанием, вернее, отладкой граффити для сайта. Получилось “как в говне”, если, конечно, вы понимаете мой контекст. Также поправил плагин спойлера, теперь он спрашивает; как назвать то, что вы хотите скрыть…. А скрыл бы я многое, да сил уж больше нет. Хочется приключений, но добрых и приятных, а не постсессионных проблем. так-то!
# Example MySQL config file for very large systems. # # This is for a large system with memory of 1G-2G where the system runs mainly # MySQL. # # You can copy this file to # /etc/my.cnf to set global options, # mysql-data-dir/my.cnf to set server-specific options (in this # installation this directory is /var/lib/mysql) or # ~/.my.cnf to set user-specific options. # # In this file, you can use all long options that a program supports. # If you want to know which options a program supports, run the program # with the "--help" option.
# The following options will be passed to all MySQL clients [client] #password = your_password port = 3306 socket = /var/lib/mysql/mysql.sock
# Here follows entries for some specific programs
# The MySQL server [mysqld] max_connections = 2048 log-error = /var/log/mysqld.log port = 3306 socket = /var/lib/mysql/mysql.sock skip-locking key_buffer = 384M max_allowed_packet = 1M table_cache = 512 sort_buffer_size = 2M read_buffer_size = 2M read_rnd_buffer_size = 8M myisam_sort_buffer_size = 64M thread_cache_size = 64 query_cache_size = 32M # Try number of CPU's*2 for thread_concurrency thread_concurrency = 8 thread_stack = 192K
# Query cache, disabled for now query_cache_size = 0 query_cache_type = 1 query_cache_limit = 2M
# Don't listen on a TCP/IP port at all. This can be a security enhancement, # if all processes that need to connect to mysqld run on the same host. # All interaction with mysqld must be made via Unix sockets or named pipes. # Note that using this option without enabling named pipes on Windows # (via the "enable-named-pipe" option) will render mysqld useless! # skip-networking
# Disable Federated by default skip-federated skip-bdb # Replication Master Server (default) # binary logging is required for replication log-bin=mysql-bin
# required unique id between 1 and 2^32 - 1 # defaults to 1 if master-host is not set # but will not function as a master if omitted server-id = 1
# Replication Slave (comment out master section to use this) # # To configure this host as a replication slave, you can choose between # two methods : # # 1) Use the CHANGE MASTER TO command (fully described in our manual) - # the syntax is: # # CHANGE MASTER TO MASTER_HOST=, MASTER_PORT=, # MASTER_USER=, MASTER_PASSWORD= ; # # where you replace , , by quoted strings and # by the master's port number (3306 by default). # # Example: # # CHANGE MASTER TO MASTER_HOST='125.564.12.1', MASTER_PORT=3306, # MASTER_USER='joe', MASTER_PASSWORD='secret'; # # OR # # 2) Set the variables below. However, in case you choose this method, then # start replication for the first time (even unsuccessfully, for example # if you mistyped the password in master-password and the slave fails to # connect), the slave will create a master.info file, and any later # change in this file to the variables' values below will be ignored and # overridden by the content of the master.info file, unless you shutdown # the slave server, delete master.info and restart the slaver server. # For that reason, you may want to leave the lines below untouched # (commented) and instead use CHANGE MASTER TO (see above) # # required unique id between 2 and 2^32 - 1 # (and different from the master) # defaults to 2 if master-host is set # but will not function as a slave if omitted #server-id = 2 # # The replication master for this slave - required #master-host = # # The username the slave will use for authentication when connecting # to the master - required #master-user = # # The password the slave will authenticate with when connecting to # the master - required #master-password = # # The port the master is listening on. # optional - defaults to 3306 #master-port = # # binary logging - not required for slaves, but recommended #log-bin=mysql-bin
# Point the following paths to different dedicated disks #tmpdir = /tmp/ #log-update = /path-to-dedicated-directory/hostname
# Uncomment the following if you are using BDB tables #bdb_cache_size = 384M #bdb_max_lock = 100000
# Uncomment the following if you are using InnoDB tables innodb_data_home_dir = /var/lib/mysql/ innodb_data_file_path = ibdata1:2000M;ibdata2:10M:autoextend innodb_log_group_home_dir = /var/lib/mysql/ innodb_log_arch_dir = /var/lib/mysql/ # You can set .._buffer_pool_size up to 50 - 80 % # of RAM but beware of setting memory usage too high innodb_buffer_pool_size = 6G innodb_additional_mem_pool_size = 64M # Set .._log_file_size to 25 % of buffer pool size innodb_log_file_size = 1500M innodb_log_buffer_size = 8M innodb_flush_log_at_trx_commit = 1 innodb_lock_wait_timeout = 50 default_storage_engine = InnoDB
transaction_isolation = REPEATABLE-READ
# Percentage of unwritten dirty pages not to exceed innodb_max_dirty_pages_pct = 80
# Number of concurrent threads to run innodb_thread_concurrency = 16 # Enable fast innodb shutdown (skip full purge and insert buffer merge) innodb_fast_shutdown = 1
# Dont delay insert, update and delete operations when purge # operations are lagging innodb_max_purge_lag = 0 innodb_file_io_threads = 8 [mysqldump] quick max_allowed_packet = 16M
[mysql] no-auto-rehash # Remove the next comment character if you are not familiar with SQL #safe-updates
Наконец-то дошли руки до поисковой оптимизации релизера, и первым делом решил взяться за чпу. Чтож, в итоге написал класс для форматирования этих самых ссылок, но, столько работы для переделки всех ссылей в релизере. 1300+ ссылок. Это же пипец, товарищи) Но ничего, уже функционирующий чпу можно посмотреть на http://www.megafreeload.com (это мой совместный проект с одним человеком)
В общем. Сервак вис. Настроение мое не улучшалось от этого. Было решено куда-то деть таблицу snatched (это та, которая с 3.7кк записей). Она, сцука, при клинапе лочилась, таща за собой все остальные запросы, по этому, собсвенно, и была удалена следующая сточка из cleanup.php
mysql_query("UPDATE snatched SET seeder = 0 WHERE seeder = 1 AND last_action < $deadtime");
Да, именно это зло и ложило машину. Но это не все, на своем трекере-соцсети, http://www.torrentsbook.com , я пошел дальше. Дропнул поля, которые отвечают за то, когда последний раз юзверь сидировал при подключении к трекеру, и является ли он сидером сейчас. Нафига, скажите мне, в истории 3кк торрентов держать такие частоизменяемые поля? Вот и я о том же. Снесены: last_action, to_go, seeder из таблицы snatched, удалено всё, что их затрагивало из анонсера, а запросы в деталях юзверя переделаны на JOIN таблице peers… Конечно, джоин при больших объемах скачки займет порядка 3-7 секунд, но это простительно, если на такую страницу как история закачек юзверя заходят редко.
Также, я заменил все COUNT на SUM…. получилось быстро:) Но это все в угоду InnoDB, ибо при MyISAM мускул умирал от локов таблиц..
Ну вот собственно сегодня дописывал историю пользователей на тбуке. Задолбался ужас как. Слава богу, взял наработки с других страниц, там оказались очень удобные запросы. Так что для релизера версии 3 остается дописать просмотр созданных страниц, отображение в юзерхистори, к чему были сделаны комменты и, естественно инвайты в приватные релиз-группы! WRYYYYYYYYYYYY!