Проблема MySQL - ПОЛНЫЙ сервер переполнен!пожалуйста, порекомендуйте - PullRequest
2 голосов
/ 24 июня 2011

Это мой первый вопрос, поэтому, пожалуйста, не обращайте на меня внимания: P
Я обычно склоняюсь к поиску решения, но сейчас я тороплюсь и использую всересурсы, которые у меня были ...

, потому что мой веб-сайт является коммерческим, было бы справедливо пойти дальше и заплатить кому-то, чтобы помочь мне, но ... У меня есть некоторые финансовые проблемы, это был третий месяцплатеж на мой выделенный сервер, но все же это был только первый месяц с того момента, как мой сайт был фактически запущен ... Я сделал все сам, потому что я не могу позволить себе платить кому-либо, и у меня нет рекламы на нем, потому что я не думаю, что будуполучить что-нибудь сейчас, и реклама будет просто бесполезной ... хотя я собираюсь использовать рекламу позже в жизни моего сайта, я не получаю ни копейки (хотя бы за мой бюджет) за аренду дорогого сервера ... :(

Это моя проблема: у меня есть выделенный сервер, который работал отлично, пока несколько дней назад, когда мой трафик начал расти ... В течение нескольких дней я продолжаю получать письма от моего монитора состояния процессора отмой сервер ... он словно застрял на полном газу, и я пытаюсь выяснить причину и устранить проблему! ...

Я действительно в отчаянии, поэтому, пожалуйста, помогите мне!

вот мои последние статистические данные (хотя они были такими вот уже 4 дня ...)
08:02:35 up 12 days, 14:39, 0 users, load average: 25.82, 25.98, 25.92

Я использую счетчик статистики, я думаю, что они довольно точные (код на каждомстраница, так что это глобальные результаты моего сайта) ... Моя статистика:

Page Loads  Unique Visits   
10,367              1,843   

Мои главные страницы index.php и videos.php (кстати, у меня есть видео-сайт)

страницы index и videos.php всегда используют около 140-150-160% процессоров, я имею в виду, а?они используют более 100%?например, взаймы или что-то еще?

они оба делают:
(в основном это страница видео, индекс - это просто упрощенная версия)

проверяют и берут, если передают-запрос и номер страницы.
запросить базу данных, взять результаты из таблицы и показать их

Я использую mysql_connect для всего, что я беру из MySQL.Я слышал о постоянных соединениях в MySQL как о возможном решении большого количества запросов, но также читал о многих недостатках этого метода, вызванных проблемами безопасности ... пожалуйста, посоветуйте?

моя база данных - myisamengined
У меня есть 2 основные таблицы: игры и видео.
В них около 5-6000 таблиц, используемых для хранения комментариев ...

 games table:    9   columns    
 id - primary   
 name - fulltext - used by my search    

 videos table:    17 columns    
 indexes:   
 id-primary     
 title,tags-fulltext-used by search     

остальные таблицы используются для комментариевно у них нет никакого индекса, кроме поля id.они только держат комментарий и дату в себе.когда я загружаю страницу поиска, все данные берутся из db: search для ключевых слов, берут самые относительные и затем выводят все данные, относящиеся к соответствующим элементам.при открытии видео страницы все комментарии с определенной базы данных загружаются и отображаются в поле.

Что я могу сделать, чтобы уменьшить использование вычислительной мощности?

также моя поддержкаКоманда только что отправила мне электронное письмо:

мы увеличили кеш таблицы до 12000, пожалуйста, проверьте сейчас, как он работает. А также лучше получить файл my.cnf, который наиболее подходит для вашей работыокружающая среда, здесь переменные mysql установлены на значения по умолчанию.

Я только что прочитал кое-что о файле my.cnf в Google, но ничего не связано с моим делом ... Может кто-нибудь указать мне, что следуетмой my.cnf файл содержит?связано с моей ситуацией?

У меня есть информация о моем сервере, но она занимает некоторое место ... как я могу как-то закрыть ее, и вы откроете ее, только если хотите прочитать?без использования ссылок?

я должен просто опубликовать это здесь, как это?Пожалуйста, если модератор прочитает это и может каким-то образом свернуть это, пожалуйста, сделайте это!

Server Information:
-------------------------------------------------------

Processor Information
Total processors: 6

Processor #1

Vendor
    AuthenticAMD

Name
    AMD Phenom(tm) II X6 1055T Processor

Speed
    2800.000 MHz

Cache
    512 KB

Processor #2

Vendor
    AuthenticAMD

Name
    AMD Phenom(tm) II X6 1055T Processor

Speed
    2800.000 MHz

Cache
    512 KB

Processor #3

Vendor
    AuthenticAMD

Name
    AMD Phenom(tm) II X6 1055T Processor

Speed
    2800.000 MHz

Cache
    512 KB

Processor #4

Vendor
    AuthenticAMD

Name
    AMD Phenom(tm) II X6 1055T Processor

Speed
    2800.000 MHz

Cache
    512 KB

Processor #5

Vendor
    AuthenticAMD

Name
    AMD Phenom(tm) II X6 1055T Processor

Speed
    2800.000 MHz

Cache
    512 KB

Processor #6

Vendor
    AuthenticAMD

Name
    AMD Phenom(tm) II X6 1055T Processor

Speed
    2800.000 MHz

Cache
    512 KB


Memory Information

Memory for crash kernel (0x0 to 0x0) notwithin permissible range
Memory: 7917400k/8912896k available (2575k kernel code, 208164k reserved, 1304k data, 212k init)



System Information

Linux nrgysrv1.hostrprv1.com 2.6.18-194.32.1.el5 #1 SMP Wed Jan 5 17:52:25 EST 2011 x86_64 x86_64 x86_64 GNU/Linux


Physical Disks

SCSI device sda: 2930277168 512-byte hdwr sectors (1500302 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: drive cache: write back
SCSI device sda: 2930277168 512-byte hdwr sectors (1500302 MB)
sda: Write Protect is off
sda: Mode Sense: 00 3a 00 00
SCSI device sda: drive cache: write back
sd 0:0:0:0: Attached scsi disk sda
SCSI device sdb: 2930277168 512-byte hdwr sectors (1500302 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: drive cache: write back
SCSI device sdb: 2930277168 512-byte hdwr sectors (1500302 MB)
sdb: Write Protect is off
sdb: Mode Sense: 00 3a 00 00
SCSI device sdb: drive cache: write back
sd 3:0:0:0: Attached scsi disk sdb
sd 0:0:0:0: Attached scsi generic sg0 type 0
sd 3:0:0:0: Attached scsi generic sg1 type 0



Current Memory Usage

             total       used       free     shared    buffers     cached
Mem:       7920256    7873744      46512          0      61148    6980096
-/+ buffers/cache:     832500    7087756
Swap:      4192956        184    4192772
Total:    12113212    7873928    4239284


Current Disk Usage

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda3             1.4T  636G  645G  50% /
/dev/sda1              99M   18M   77M  19% /boot
tmpfs                 3.8G     0  3.8G   0% /dev/shm
/dev/sdb1             1.4T  291G 1016G  23% /backup
/usr/tmpDSK           485M   11M  449M   3% /tmp


----------------------------------------------------

Я думаю, что это вся информация, которая у меня есть.

Если вы помилуете меня, пожалуйста,помогите! ... спасибо миллион миллиардов раз! hot

Ответы [ 3 ]

4 голосов
/ 24 июня 2011

страницы index и videos.php всегда используют около 140-150-160% процессоров, я имею в виду, а?они используют более 100%?например, займы или что?

Нет, нагрузка выражается в виде одной единицы на процессор, поэтому, если на вашем сервере четыре процессора, загрузка 1,00 (или 100%) означает, что один процессор заполненнагрузка, а остальные три - на холостом ходу (или два на 50% нагрузки, а два других на 0%, или любая подобная комбинация), а нагрузка 4,00 (или 400%) будет означать, что все процессоры работают на полную мощность.

Я использую mysql_connect для всего, что я беру из mysql.Я слышал о постоянных соединениях в MySQL как о возможном решении большого количества запросов, но также читал о многих недостатках этого метода, вызванных проблемами безопасности ... пожалуйста, посоветуйте?

Почемуэто должно быть проблема безопасности ?Возможно, это может быть проблема производительности в случае неправильного использования, но определенно не проблема безопасности.

Из того, что вы пишете, кажется, что вы довольно новичок в реляционной базе данных и, возможно, в веб-разработке, первый шаг, который я предлагаю, это купить книгу базы данных и узнать, как они работают и как их использовать, а затем хорошую книгу по PHP.В противном случае вы будете программировать по совпадению и никогда не решите свои проблемы.

Кстати, если вы новичок (и вы это знаете), вы должны прочитать часто задаваемые вопросы , Как спросить и Справка по редактированию .

3 голосов
/ 24 июня 2011

Во-первых, изолируйте проблему.Нет никакого смысла настраивать MySQL, если основная причина проблемы - в вашем php-коде.

Ваша поддержка заявила, что они "увеличили кеш таблицы до 12000", поэтому они, вероятно, увеличили значение для table_open_cache с 400 (по умолчанию) до 12000. (Вероятно, у вас не должно быть 6000 таблиц. Пересмотрите этот дизайн.)

Для MySQL изучите эти разделы документации MySQL.

Настройка параметров сервера

При настройке сервера MySQL двумя наиболее важными переменными для настройки являются key_buffer_size и table_open_cache.Прежде чем пытаться изменить какие-либо другие переменные, вы должны сначала убедиться, что они установлены соответствующим образом.

Предварительно сконфигурированные файлы опций

MySQL предоставляет числопредварительно настроенных файлов опций, которые могут быть использованы в качестве основы для настройки сервера MySQL.Найдите файлы, такие как my-small.cnf, my-medium.cnf, my-large.cnf и my-огромный.cnf, которые являются примерами файлов опций для малых, средних, больших и очень больших систем.

Системные переменные сервера

Переменные состояния сервера

Вы также должны иметь локальную или удаленную систему для тестирования.

1 голос
/ 24 июня 2011

Я думаю, проблема в том, что у вас есть отдельная таблица для каждого видео. Все комментарии (или любые другие) должны храниться в той же таблице с прикрепленным к ним video_id или аналогичным, чтобы связать их с соответствующим видео.

...