Н-да... сочувствую всем получившим Ваши угрозы.
А я для запуска такого проекта взял бы самый минимальный конфиг: VDS, 1 ядро, 1гиг рама. Почему? А чтобы как можно быстрее понять будущие проблемы проекта.
Начнет тормозить? - Замечательно, ищем проблему, переписываем частично софт, возможно меняем структуру БД, оптимизируем, настраиваем сервер. Ждем следующих тормозов и так по кругу несколько раз. На выходе получается жизнеспособный софт и оптимизированные серверные конфиги.
Лучше такие действия проводить сразу на малом количестве клиентов, чем взять сервер с многократным запасом и набивать клиентами на не оттестированном в боевых условиях софте, пока тот не сложится и возможно потом не поднимется. Правка уже разросшегося проекта намного сложней, чем правки сделанные на старте.
Кстати, можете сразу подумать над распределенной структурой своего проекта. Центральная часть отдельно и она общается с клиентскими магазинами по web api. Это позволит клиентские магазины размещать на других хостингах/вдсках/серверах. ДДосят? Ну сложится один-два клиентских магазина, все остальные этого не заметят. Центральная часть будет шустро обслуживать всех остальных, ее ддосом никак не затронут.
Как-то так.
По хостингу можете посмотреть у sladkydze http://riaas.ru
Берете самый минимум, потом по мере необходимости плавно увеличиваете память/ядра/диски - скорей всего даже перегружать свой сервер не нужно будет для этого. :)
Скорее всего так и есть. Год-два назад я тихо охреневал от такого поворота, для меня это было как-бы неожиданностью.
У Директи/ЛогикБокс в ресселерах обычно встречаешь такое г-но, что приходится сразу трансферить покупные домены куда подальше. А тут прынц на белом коне рег.ру - приемлик, млин, ресселерклаба, но они и новые реги на директи пихали...
Самая безопасная и стабильная зона - это Счина, т.к. ни одна страна в мире без их ширпотреба не выживет(а если выжевет, то хреново). А на домены пох, этоже Счина. :)
настоящая "пятничная тема" :)
Вы платите абонентскую плату за использование серверных мощностей яндекса(зп админам, техподдержке и т.д.) для размещения в них своего сайта?
Нет - ну так в чем вопрос?.. Хотя даже при фильтрах сайт как-то присутсвует в яндексе и Вы ничего за это не платите.
Если вы платите за размещение, то яндекс директ отдает то, за что вы заплатили.
Вроде все логично, какие могут быть претензии? :) Или это извечный вопрос, что все вокруг должны мне любимому и "особенному".
С монополией - мимо, в ру сегменте яндекс не монополист.
ps: эмоционально - понимаю, у самого с поисковиками все далеко не лучшим образом, если кратко, то в о-пе. Но с точки зрения бизнеса/денег - никто и ничего нам не должен... а жаль :)
SELECT id2 FROM table WHERE id1 = ID ORDER BY ctr LIMIT limit
т.е. запрос по этим полям?
SELECT item_id FROM table WHERE keyword_id = ID ORDER BY ctr LIMIT limit
Именно для этого запроса нужен индекс по одному полю keyword_id
Запрос хороший и попадет в query_cache, дополнительного кеширования не нужно.
CREATE TABLE IF NOT EXISTS `cj` ( `keyword_id` int(11) NOT NULL, `item_id` int(11) NOT NULL, `views` int(11) NOT NULL DEFAULT '0', `clicks` int(11) NOT NULL DEFAULT '0', `ctr` int(11) NOT NULL DEFAULT '0', PRIMARY KEY (`keyword_id`,`item_id`), KEY `keyword_id` (`keyword_id`,`item_id`,`ctr`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;
"KEY `keyword_id` (`keyword_id`,`item_id`,`ctr`)" - бесполезный индекс будет только занимать место и тормозить при апдейтах таблицы. `keyword_id`,`item_id` - уникальны, каким боком сюда включать еще ctr?..
'PRIMARY KEY (`keyword_id`,`item_id`)' - желательно снести этот примари кей и пересоздать его как UNIQUE KEY keyword_item (`keyword_id`,`item_id`). Смысл тотже самый, но новые данные в табличку будут вставлятся быстрее.
Интересно было бы после этих изменений сравнить еще скорость InnoDB vs MyISAM.
У Вас разве ключ <id1><id2> не уник? Судя по "сортировке" - нет.. Какой у вас ключ уникальный?
А лучше покажите структуру таблицы "CREATE TABLE... и т.д."
офтопик... обычно есть две проблемы: недостаток данных и избыток ненужных данных(как у Вас).
Наверное, вы пытаетесь сохранять все показы/клики и т.д. - тупиковый путь.
Сохраняйте и оперируйте только итоговыми цифрами за час, сутки, неделя, месяц. Может вы немного потеряете в точности, но значительно выиграете в скорости и в устойчивости своей системы.
К примеру, по таблице с подробными данными(bulk), можно раз в час считать итоговые данные и эти итоговые данные сохранять, а саму табличку bulk очищать.
Для истории(отладки), можно накапливать bulk в виде текстовых логов по дням. Сделайте удобный для себя формат логов и вперед.
По моим наблюдениям, тяжелые или долгоиграющие скрипты лучше запускать напрямую, т.е. php script.php
Если нужно управление через веб, то делается простенький скрипт, который при обращению к нему создает файлик "run.flag" и больше он ничего не делает.
Основной скрипт ставим в cron, например раз в минуту(или в 5 минут), при запуске проверяем наличие файла "run.flag" - если нет файла, то просто выход. Если есть флаг, то проверяем не запущен ли уже основной скрипт(ну или считаем количество запущенных копий, если допускается многократный запуск скрипта), если все ок, то удаляем флаг и запускаемся..
Если через веб нужно передавать параметры для запуска, то как-то так:
@file_put_contents("run.flag", serialize($_REQUEST) );
В основном скрипте читаем параметры из файла "run.flag".
На какой-нибудь андроид поставьте Wifi Analyzer. Включите в нем режим как на втором скриншоте и посмотрите кто и кого забивает.
Найдите более-менее свободный диапазон(канал) и принудительно выставите его в своем роутере. Обычно по умолчанию в роутере стоит авто-выбор канала.
Логичная версия: гугл быстрее реагирует на изменение понятий. Сейчас в тренде гибридные войны, гибридные воины у которых гибридная "честь" и такая же "отвага".
т.е. результат "каких-то придурков, комиксы, всякую чушь" вполне закономерен. 😂