powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Непонятная нагрузка на CPU 100% после запуска MYSQL
11 сообщений из 36, страница 2 из 2
Непонятная нагрузка на CPU 100% после запуска MYSQL
    #38944285
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BossBoxФайл настроек для MySQL я накидал бегло (просто занизил все значения), если может кто помочь, накидайте пожалуйста какие параметры лучше прописать (хотя бы основные)Лучше всего, оставить дефолтовые настройки. Если конфига нет после установки - и не надо его делать. Для многих и многих случаев это самый простой способ настройки СУБД на первое время, особенно, если нет ясного понимания влияния каждого из вносимых в файл параметров. Будут проблемы - сделаете правки для устранения конкретных проблем. У меня были случаи, когда руками писаный конфиг отсутствовал на сервере - и никто этого не замечал годами.

Для Вашего случая, пожалуй, можно только skip-innodb оставить, если этот движок не нужен и skip-networking , если сетевые подключения не нужны.

А так в конфиге ляпы, конечно... port = 3306 - указывает номер порта для сетевых подключений, а skip-networking запрещает сетевые подключения.
...
Рейтинг: 0 / 0
Непонятная нагрузка на CPU 100% после запуска MYSQL
    #38944336
BossBox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
miksoftЛибо кнопконажимательно в phpMyAdmin (деталей не подскажу), либо командой CREATE INDEX idx_host ON upd_wotspeak_ru (host)
Данное действие, нужно выполнять каждый раз при создании новой таблицы?
Данные соответственно которые будут добавлять в таблицу автоматически будут с данным индексом?

miksoftЧто нет атаки, не пришел краулер или еще какая зараза?Это к тому, что если выросло количество внешних запросов, то неудивительно, что сервер перегружен, а MySQL просто оказался узким местом.
Возможно, есть смысл ввести какой-то контроль или ограничения на уровне файерволла или веб-сервера. Например, мне пришлось запретить в файерволле ip-адреса некоторых ботов, которые имеют наглость присылать десятки http-запросов в секунду. А иногда адреса вашего сервера публикуют на популярном сайте и количество посещений резко возрастает. Т.е. такого рода случаи тоже нельзя упускать из рассмотрения.[/quot]

Я отвечал - нет нету, сервер предназначен для статистика, PHPmyAdmin показал запросов в секунду:

ø за час: 139,587
ø за минуту: 2,326
ø в секунду: 39

Помимо этого в начале, порядок действий от 1 запроса такой:

1. Загрузка файла с сервера (15-30кб)
2. Обращение к файлу PHP на сервере
> PHP обращается к MYSQL
>> Запись/обновление данных в таблице, где есть этот IP
...
Рейтинг: 0 / 0
Непонятная нагрузка на CPU 100% после запуска MYSQL
    #38944342
BossBox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleBossBoxФайл настроек для MySQL я накидал бегло (просто занизил все значения), если может кто помочь, накидайте пожалуйста какие параметры лучше прописать (хотя бы основные)Лучше всего, оставить дефолтовые настройки. Если конфига нет после установки - и не надо его делать. Для многих и многих случаев это самый простой способ настройки СУБД на первое время, особенно, если нет ясного понимания влияния каждого из вносимых в файл параметров. Будут проблемы - сделаете правки для устранения конкретных проблем. У меня были случаи, когда руками писаный конфиг отсутствовал на сервере - и никто этого не замечал годами.

Для Вашего случая, пожалуй, можно только skip-innodb оставить, если этот движок не нужен и skip-networking , если сетевые подключения не нужны.

А так в конфиге ляпы, конечно... port = 3306 - указывает номер порта для сетевых подключений, а skip-networking запрещает сетевые подключения.

По по поводу, в конфиге несколько секций

[client]
[mysqld]
[mysqldump]
[mysql]
[myisamchk]

В myisamchk прописано:

key_cache_size = 2M
key_buffer_size = 2M
sort_buffer_size = 2M

Они применяются к mysqld, или нужно их туда записать а из myisamchk удалить ?
...
Рейтинг: 0 / 0
Непонятная нагрузка на CPU 100% после запуска MYSQL
    #38944363
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BossBoxmiksoftЛибо кнопконажимательно в phpMyAdmin (деталей не подскажу), либо командой CREATE INDEX idx_host ON upd_wotspeak_ru (host)
Данное действие, нужно выполнять каждый раз при создании новой таблицы?Это нужно сделать один раз.
Для новых таблиц могут потребоваться или не потребоваться другие индексы. Зависит от запросов и фактических даных, которые будут лежать в этих таблицах.


BossBoxПо по поводу, в конфиге несколько секцийСейчас речь идет о секции [mysqld]. Именно в ней задаются настройки для сервера.
Остальные секции играют роль для соответствующих утилит.

BossBox2. Обращение к файлу PHP на сервере
> PHP обращается к MYSQL
>> Запись/обновление данных в таблице, где есть этот IPПодозреваю, что этот блок можно заменить одной командой LOAD DATA INFILE. Или двумя - загрузкой в промежуточную таблицу и вставкой в рабочие.
...
Рейтинг: 0 / 0
Непонятная нагрузка на CPU 100% после запуска MYSQL
    #38944390
BossBox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
У меня в PHP файле такой код:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
72.
73.
74.
75.
76.
77.
78.
79.
80.
81.
82.
83.
84.
85.
86.
87.
88.
89.
90.
91.
92.
93.
94.
95.
96.
<?php

	echo "---<br>";

	$mysqli = new mysqli("localhost", "root", "password", "NotificationBox");

	if ($mysqli->connect_error) {
		die('Ошибка подключения (' . $mysqli->connect_errno . ') '
				. $mysqli->connect_error);
	}
	
	$base = $_GET["base"];
	$type = $_GET["type"];
	
	$dats = date("Y-m-d H:i:s");
	
	$host = $_SERVER["REMOTE_ADDR"];

	if ($mysqli->query("CREATE TABLE ".$base." (id INT NOT NULL AUTO_INCREMENT PRIMARY KEY, data VARCHAR(50) NOT NULL, host VARCHAR(50) NOT NULL, type VARCHAR(50) NOT NULL)"))

		{echo "- Новая таблица успешно создана<br>";}

	else
	
		if ($mysqli->errno == 1050)

			{echo "Таблица уже существует<br>";}
		
		else
			
			{echo "Не удалось создать таблицу: (" . $mysqli->errno . ") " . $mysqli->error;}
		
	if ($type == "init")
		
		{
			if (!$mysqli->query("SELECT '".$host."' FROM ".$base." WHERE host = '".$host."'")->num_rows > 0)
				
				{
					$mysqli->query("INSERT INTO ".$base." (data, host, type) VALUES ('".$dats."', '".$host."', '".$type."')");
				}
			
			else
			
				if ($mysqli->query("UPDATE ".$base." SET type = '".$type."' WHERE host = '".$host."'"))
				
					{
						{echo "<br>Данные успешно обновлены<br>";}
					}
				
				else
				
					{echo "<br>Ошибка обновления данных<br>: (" . $mysqli->errno . ") " . $mysqli->error;}

		}
	
	if ($type == "exit")
		
		{
			if ($mysqli->query("SELECT '".$host."' FROM ".$base." WHERE host = '".$host."'")->num_rows > 0)
				
				{
					// $mysqli->query("DELETE FROM ".$base." WHERE host = '".$host."'");

					if ($mysqli->query("UPDATE ".$base." SET type = '".$type."' WHERE host = '".$host."'"))
					
						{
							{echo "<br>Данные успешно обновлены<br>";}
						}
					
					else
					
						{echo "<br>Ошибка обновления данных<br>: (" . $mysqli->errno . ") " . $mysqli->error;}
				}
				
			else
			
				{
					{echo "Чувак обновлять то нечего 0_o";}
				}
		}
	
	echo "---<br>";
	
	if (mysqli_close($mysqli))
		
		{
			{echo "Соединение успешно закрыто";}
		}
	
	else
		
		{
			{echo "ВНИМАНИЕ! Соединение не закрыто";}
		}

?>



Я тут попробовал, чтобы не ждать CPU100%, скопировал данный участок 3 раза, тут действие то выполняется простое соеденится и проверить и обновить, но MySQL сразу почему выдает сразу CPU 100%, кажется что код который выше (продублированный 3 раза) написан не оптимально..
...
Рейтинг: 0 / 0
Непонятная нагрузка на CPU 100% после запуска MYSQL
    #38944429
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BossBox
Код: php
1.
2.
3.
4.
	if ($type == "init")
		
		{
			if (!$mysqli->query("SELECT '".$host."' FROM ".$base." WHERE host = '".$host."'")->num_rows > 0)

Здесь ветки if и else местами не перепутаны?
...
Рейтинг: 0 / 0
Непонятная нагрузка на CPU 100% после запуска MYSQL
    #38944460
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BossBoxmiksoftЛибо кнопконажимательно в phpMyAdmin (деталей не подскажу), либо командой CREATE INDEX idx_host ON upd_wotspeak_ru (host)
Данное действие, нужно выполнять каждый раз при создании новой таблицы?
BossBoxУ меня в PHP файле такой код:У Вас таблицы однотипной структуры создаются скриптом. Так что, для новых таблиц достаточно один раз поправить этот скрипт. Для существующих - просто добавить индекс.

Ещё момент. Дату, конечно, можно хранить в текстовом поле. В смысле, она туда умещается. Если хотите хранить именно в текстовом, то есть смысл сменить тип поля на char с фиксированной длиной - в данном конкретном случае длина строки постоянна. Однако, для хранения даты/времени в мускуле имеется специально для этого предназначенный тип поля.

IP-адреса можно хранить в виде целого (собственно, адреса IPv4 - это и есть 32-битное целое). При таком подходе появляется необходимость дополнительной обработки данных при записи/чтении, но по компактности хранения и по производительности оно будет в разы лучше.

И ещё, касаемо безопасности. Значения $_GET["base"] и $_GET["type"] в данном коде попадают напрямую в запрос без каких-то проверок на допустимость.
...
Рейтинг: 0 / 0
Непонятная нагрузка на CPU 100% после запуска MYSQL
    #38944493
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ещё пара моментов ао коду.

Вместо "CREATE TABLE" с последующей проверкой на ошибку 1050 можно использовать "CREATE TABLE IF NOT EXISTS". Соответственно, проверка упрощается.

И ещё одна ошибка. Если таблицу создать не удалось, то дальнейшие обращения к этой несуществующей таблице попросту бесполезны.
...
Рейтинг: 0 / 0
Непонятная нагрузка на CPU 100% после запуска MYSQL
    #38944509
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я бы еще предложил сделать одну таблицу, а $base сделать в ней полем. Тогда понадобится индекс (base,host). Но не понадобится создавать таблицу на лету, что не такая уж дешевая операция.
...
Рейтинг: 0 / 0
Непонятная нагрузка на CPU 100% после запуска MYSQL
    #38944577
BossBox
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkleBossBoxпропущено...

Данное действие, нужно выполнять каждый раз при создании новой таблицы?
BossBoxУ меня в PHP файле такой код:У Вас таблицы однотипной структуры создаются скриптом. Так что, для новых таблиц достаточно один раз поправить этот скрипт. Для существующих - просто добавить индекс.

Меня просто терзают сомнения, в PHP то нужно что-то менять чтобы задействовать индексы при запросе к БД?
Или после того как добавлю индексы к таблице, при запросе моего PHP к таблице для поиска ключей, MySQL сама все сделает (будет использовать)?
...
Рейтинг: 0 / 0
Непонятная нагрузка на CPU 100% после запуска MYSQL
    #38944590
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BossBoxИли после того как добавлю индексы к таблице, при запросе моего PHP к таблице для поиска ключей, MySQL сама все сделает (будет использовать)?Обычно да. В редких сложных случаях нужно в запросе добавить хинт для задействования индекса. Здесь же случай простой, думаю, индекс сам подхватится.
...
Рейтинг: 0 / 0
11 сообщений из 36, страница 2 из 2
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Непонятная нагрузка на CPU 100% после запуска MYSQL
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]