- Поисковые системы
- Практика оптимизации
- Трафик для сайтов
- Монетизация сайтов
- Сайтостроение
- Социальный Маркетинг
- Общение профессионалов
- Биржа и продажа
- Финансовые объявления
- Работа на постоянной основе
- Сайты - покупка, продажа
- Соцсети: страницы, группы, приложения
- Сайты без доменов
- Трафик, тизерная и баннерная реклама
- Продажа, оценка, регистрация доменов
- Ссылки - обмен, покупка, продажа
- Программы и скрипты
- Размещение статей
- Инфопродукты
- Прочие цифровые товары
- Работа и услуги для вебмастера
- Оптимизация, продвижение и аудит
- Ведение рекламных кампаний
- Услуги в области SMM
- Программирование
- Администрирование серверов и сайтов
- Прокси, ВПН, анонимайзеры, IP
- Платное обучение, вебинары
- Регистрация в каталогах
- Копирайтинг, переводы
- Дизайн
- Usability: консультации и аудит
- Изготовление сайтов
- Наполнение сайтов
- Прочие услуги
- Не про работу
В 2023 году Google заблокировал более 170 млн фальшивых отзывов на Картах
Это на 45% больше, чем в 2022 году
Оксана Мамчуева
Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий
исходные данные
centos 6 x64 / 24gb ram / 2 x 5620 (8x2.4ghz)
стоит nginx + mysql + php-fpm
php скрипт раз в сутки по крону обрабатывает таблицу mysql из 400К товаров и пишет в файл то, чего скажем уже нет, на это он тратит 8-10 минут, не нагружая при этом сервер вообще - LA 0.35, цепляется к одному из 16 (HT) ядер и там отрабатывает, в топе 90% CPU на одном ядре (остальные спокойно спят)
задача состоит в том, чтобы задействовать всю мощь CPU и снизить время обработки до 1-2 минут, средствами тонкой настройки окружения / ядра и т.п.
из идей только переписать скрипт, чтобы он создавал десяток субпроцессов которые распределяться по ядрам для обработки всей базы по кускам
возможно ли такое в принципе, не переписывая скрипт ?
помогите советом, вторую ночь не сплю
спасибо
p.s. из трейса процесса, чем он занят
read(5, "\1\0\0\1\1B\0\0\2\3def\rnasha_base\1o\ncs"..., 16384) = 93
poll([{fd=5, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(5, "\230\0\0\0\3SELECT package_fk FROM cs_o"..., 156) = 156
read(5, "\1\0\0\1\1B\0\0\2\3def\rnasha_base\1o\ncs"..., 16384) = 93
poll([{fd=5, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(5, "\230\0\0\0\3SELECT package_fk FROM cs_o"..., 156) = 156
read(5, "\1\0\0\1\1B\0\0\2\3def\rnasha_base\1o\ncs"..., 16384) = 100
poll([{fd=5, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(5, "\230\0\0\0\3SELECT package_fk FROM cs_o"..., 156) = 156
read(5, "\1\0\0\1\1B\0\0\2\3def\rnasha_base\1o\ncs"..., 16384) = 93
poll([{fd=5, events=POLLIN|POLLPRI}], 1, 0) = 0 (Timeout)
write(5, "\230\0\0\0\3SELECT package_fk FROM cs_o"..., 156) = 156
read(5, "\1\0\0\1\1B\0\0\2\3def\rnasha_base\1o\ncs"..., 16384) = 93
ostat
Linux 2.6.32-279.14.1.el6.x86_64 (net) 11/10/2012 _x86_64_ (16 CPU)
avg-cpu: %user %nice %system %iowait %steal %idle
2.94 0.00 0.16 0.07 0.00 96.83
Device: tps Blk_read/s Blk_wrtn/s Blk_read Blk_wrtn
sda 13.31 528.44 67.02 1185814 150394
vmstat
procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
2 0 0 22491024 21156 711528 0 0 19 3 58 108 3 0 97 0 0
скриншот топа
Это очень правильный вопрос. Он уже содержит в себе ответ.
Он уже содержит в себе ответ.
переписать скрипт, чтобы он создавал десяток субпроцессов которые распределяться по ядрам для обработки всей базы по кускам
ммм, оно? :)
параллельное программирование рулит. вот только в PHP оно в зачаточном состоянии. несколько лет назад видел реализацию многопоточности в PHP через сокеты.
параллельное программирование рулит. вот только в PHP оно в зачаточном состоянии. несколько лет назад видел реализацию многопоточности в PHP через сокеты.
не совсем понял что ты имеешь ввиду
но вопрос мы решили с помощью CThread
---------- Добавлено 11.11.2012 в 04:41 ----------
php -q /home/******/**/index.php
Running dumper with 16 threads
merge complete. going to num ---> 23
merge complete. going to num ---> 22
merge complete. going to num ---> 21
merge complete. going to num ---> 20
merge complete. going to num ---> 19
merge complete. going to num ---> 18
merge complete. going to num ---> 17
merge complete. going to num ---> 16
merge complete. going to num ---> 15
merge complete. going to num ---> 14
merge complete. going to num ---> 13
merge complete. going to num ---> 12
merge complete. going to num ---> 11
merge complete. going to num ---> 10
merge complete. going to num ---> 9
merge complete. going to num ---> 8
merge complete. going to num ---> 7
merge complete. going to num ---> 6
merge complete. going to num ---> 5
merge complete. going to num ---> 4
merge complete. going to num ---> 3
merge complete. going to num ---> 2
merge complete. going to num ---> 1
merge complete. going to num ---> 0
#2012-11-11 00:02:56
#eofcfg 2012-11-11 00:03:59
вместо 8 мин
уперлись в мускуль
есть такая идея - за х ярить таблицу в рамдиск и ее там через mysqli вы е ба-ть, профиты - скипаем mysql конектор
андрейка, не ?
В каком плане уперлись?